使用cmake从单个源文件创建多个对象

时间:2019-07-16 13:24:39

标签: cmake

使用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)

以上操作无效。

1 个答案:

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