在使用cmake的项目中,我构建了两个版本的库,一个是静态的,一个是动态链接的。对于单个源文件,我只想在编译共享库时传递不同的编译定义(即-Dfoo=bar
)。
我知道set_target_properties
我可以将COMPILE_DEFINITIONS
用于单个来源,但我不知道如何仅为共享库添加该定义。
如何做到这一点?
修改
为了澄清这个问题是如何不同的,我已经在同一个库中创建了两个版本。
add_library(static_lib STATIC foo.cpp bar.cpp)
add_library(dyn_lib SHARED foo.cpp bar.cpp)
我想要做的是在为foo.cpp
编译-Dbaz=True
时添加foo.cpp
仅使用dyn_lib
编译的目标属性
答案 0 :(得分:1)
为为-Dbaz=True
编译的对象添加定义dyn_lib
的最简单方法是使用target_compile_definition()。
target_compile_definition(dyn_lib PRIVATE -Dbaz=True)
这实际上是为COMPILE_DEFINITIONS
目标设置dyn_lib
属性的较短版本。
set_target_properties(dyn_lib PROPERTIES COMPILE_DEFINITIONS -Dbaz=True)