【发布时间】:2018-04-23 11:15:04
【问题描述】:
问题:2 个可执行文件,1 个带有 if/defs 的核心库
UPD2 在 Ľubomír Carik 的帮助下
每个可执行文件都设置自己的预处理器标志 一开始,创建库的目标
add_library(common_library STATIC ${__SOURCES} ${__HEADERS})
common_library 代码(即静态库,自带cmake文件)有预处理条件
#if defined(MY_DEFINE_1)
// specific code #1
#elif defined (MY_DEFINE_2)
// specific code #2
#else
// error
#endif
我在使用 CMake 来准备这样的配置时遇到问题。库没有看到定义。 第一个可执行文件(自己的 cmake):
target_compile_definitions(common_library PRIVATE -DMY_DEFINE_1)
add_executable(BINARY_1 ${bin1_sources} )
add_dependencies(BINARY_1 common_library)
第二个可执行文件(自己的 cmake):
target_compile_definitions(common_library PRIVATE -DMY_DEFINE_2)
add_executable(BINARY_2 ${bin2_sources} )
add_dependencies(BINARY_2 common_library)
但是 common_library 只构建一次,有 2 个定义。它应该为每个二进制文件单独构建。
【问题讨论】:
-
您的标题是关于 STATIC 库的,您的代码是指 OBJECT 库(
TARGET_OBJECTS属性),而您的文字说明 SHARED 库 (... which will build shared library 2 times)。您实际使用哪种类型的库? -
“共享”我的意思是,代码是共享的。静态或对象,我不知道,什么会起作用。很抱歉造成混乱
标签: cmake