使用cmake
,有没有办法从单个源文件生成n个唯一对象文件?
我看到autotool
的{{3}}(我知道该怎么做),但是cmake
却没有看到……。
# Make three unique object files
# from a single source file
set_source_files_properties(source.c
TARGET source_1
OBJECT_OUTPUT source_1.o
COMPILER_FLAGS -DCODE_LOGIC1
)
set_source_files_properties(source.c
TARGET source_2
OBJECT_OUTPUT source_2.o
COMPILER_FLAGS -DCODE_LOGIC2
)
set_source_files_properties(source.c
TARGET source_3
OBJECT_OUTPUT source_3.o
COMPILER_FLAGS -DCODE_LOGIC3
)
add_executable(myexec source_1 source_2 source_3)
以上操作无效。
答案 0 :(得分:3)
您正在寻找add_library(<name> OBJECT <source>)
。考虑到这一点,您可以执行以下操作:
add_library(source_1 OBJECT source.c)
target_compile_options(source_1 PUBLIC -DLOGIC1)
add_library(source_2 OBJECT source.c)
target_compile_options(source_2 PUBLIC -DLOGIC2)
add_library(source_3 OBJECT source.c)
target_compile_options(source_3 PUBLIC -DLOGIC3)
add_executable(myexec $<TARGET_OBJECTS:source_1> $<TARGET_OBJECTS:source_2> $<TARGET_OBJECTS:source_3>)