我正试图使用编译定义作为条件来构建Gtest可执行文件。有问题的CMake代码如下:
add_compile_definitions(TEST_BENCH)
if(DEFINED TEST_BENCH)
enable_testing()
endif()
但这不起作用。我已经阅读了一些关于${my_var}语法使用的类似问题和答案,而我的代码中并非如此。
编译定义可以在条件句中使用吗?如果可以,如何使用?
使用cmake(缓存(变量,这也将允许用户正确配置您的项目。
set(TEST_BENCH OFF CACHE BOOL "Enables testing of your project")
if(TEST_BENCH)
add_compile_definition(TEST_BENCH)
enable_testing()
endif()
然后,用户(和您(可以在ccmake
或cmake-gui
或cmake -DTEST_BENCH=ON
的帮助下根据他们的需求配置您的项目。我认为target_compile_definitions
通常比全局add_compile_definitions
更受欢迎。
不过,我不建议这样做,您可以将add_compile_definition
修改的COMPILE_DEFINITIONS
变量和TEST_BENCH
匹配,这样可以检查宏是否已设置。