我有cmake项目,有3个子项目。
我们称之为A,B,C。
A - 子项目B和C的公共库(静态)。 B和C - 独立可执行文件。
因此,我需要以某种方式编译" A"在" B"内使用的库具有特定的声明定义(如-DUSED_WITHIN_B_MODULE)。
另一方面" C"可执行文件应该使用" A"用另一组定义编译(如-DUSED_WITHIN_C_MODULE)
请建议我如何实施它。 我知道target_compile_definitions的PUBLIC / PRIVATE / INTERFACE修改器,但我不确定如何正确使用它来用于依赖树。
非常感谢您的帮助,谢谢。
答案 0 :(得分:1)
做这样的事情:
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)