CMake - 如何为目标可执行文件设置多个编译定义?

时间:2015-05-30 13:17:40

标签: cmake

我正在尝试为我尝试在CMake中编译的一个可执行文件设置多个编译定义(为了激活用于调试的宏)。这是我试过的:

add_executable (trie_io_test trie_io_test.c trie.c word_list.c)
    set_target_properties(
            trie_io_test
            PROPERTIES
            COMPILE_DEFINITIONS UNIT_TESTING=1)
    set_target_properties(
            trie_io_test
            PROPERTIES
            COMPILE_DEFINITIONS IO_TEST=1)

不幸的是,这只会导致定义IO_TEST。

我也尝试了以下内容:

add_executable (trie_io_test trie_io_test.c trie.c word_list.c)
    set_target_properties(
            trie_io_test
            PROPERTIES
            COMPILE_DEFINITIONS UNIT_TESTING=1 IO_TEST=1)

但另一方面,这会导致CMake错误。

如何为我正在尝试构建的可执行文件设置这两个定义?

2 个答案:

答案 0 :(得分:28)

您希望target_compile_definitions代替set_target_properties

target_compile_definitions(trie_io_test PRIVATE UNIT_TESTING=1 IO_TEST=1)

答案 1 :(得分:0)

我发现这可以为您工作:

UID

只需添加另一个add_executable (trie_io_test trie_io_test.c trie.c word_list.c) set_target_properties( trie_io_test PROPERTIES COMPILE_DEFINITIONS UNIT_TESTING=1 COMPILE_DEFINITIONS IO_TEST=1 ) :P