我正在尝试为我尝试在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错误。
如何为我正在尝试构建的可执行文件设置这两个定义?
答案 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