我有 cmake 项目,有 3 个子项目。
我们称它为 A、B、C。
A - 子项目 B 和 C 的公共(public)库(静态)。 B 和 C - 独立的可执行文件。
所以我需要以某种方式编译“A”库,以便在“B”中使用特定声明的定义(如 -DUSED_WITHIN_B_MODULE)。
另一方面,“C”可执行文件应该使用用另一组定义(如 -DUSED_WITHIN_C_MODULE)编译的“A”
请建议我如何实现它。 我知道 target_compile_definitions 的 PUBLIC/PRIVATE/INTERFACE 修饰符,但我不确定如何正确地将它用于依赖树。
将不胜感激,谢谢。
最佳答案
做这样的事情:
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)
关于c++ - cmake - 如何根据使用它的人为目标库定义符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44845324/