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)