cmake - 如何根据谁使用它来定义目标库的符号

时间:2022-05-08 23:52:44

I have cmake project, with 3 sub-projects.

我有cmake项目,有3个子项目。

Let's call it A,B,C .

我们称之为A,B,C。

A - common library(static) for both subproject B and C. B and C - standalone executables .

A - 子项目B和C的公共库(静态)和B - C - 独立可执行文件。

So I need, somehow, compile "A" library for using within "B" with specific declared defines(like -DUSED_WITHIN_B_MODULE) .

因此,我需要以某种方式编译“A”库,以便在“B”中使用特定的声明定义(如-DUSED_WITHIN_B_MODULE)。

On the other hand "C" executable should use "A" compiled with another set of defines (like -DUSED_WITHIN_C_MODULE)

另一方面,“C”可执行文件应该使用“A”编译与另一组定义(如-DUSED_WITHIN_C_MODULE)

Please suggest me how to implement it . I know about PUBLIC/PRIVATE/INTERFACE modificator for target_compile_definitions but I don't sure how to use it correctly for dependency tree .

请建议我如何实现它。我知道target_compile_definitions的PUBLIC / PRIVATE / INTERFACE修改器,但我不确定如何正确使用它来实现依赖树。

Will be grateful for help, Thank you.

将不胜感激,谢谢。

1 个解决方案

#1


0  

Do something like this:

做这样的事情:

add_library(AforB a.cpp)
set_target_properties(AforB PROPERTIES COMPILE_FLAGS -DUSED_WITHIN_B_MODULE)
add_library(AforC a.cpp)
set_target_properties(AforC PROPERTIES COMPILE_FLAGS -DUSED_WITHIN_C_MODULE)

#1


0  

Do something like this:

做这样的事情:

add_library(AforB a.cpp)
set_target_properties(AforB PROPERTIES COMPILE_FLAGS -DUSED_WITHIN_B_MODULE)
add_library(AforC a.cpp)
set_target_properties(AforC PROPERTIES COMPILE_FLAGS -DUSED_WITHIN_C_MODULE)