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

时间:2017-06-30 11:23:48

标签: c++ makefile cmake

我有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修改器,但我不确定如何正确使用它来用于依赖树。

非常感谢您的帮助,谢谢。

1 个答案:

答案 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)