【发布时间】:2019-07-13 19:20:40
【问题描述】:
我在CLion -> Settings -> Build, Execution, Deployment -> CMake 中有几个构建配置文件。无论我使用哪种编译器,如何为每个配置文件设置预处理器定义?
【问题讨论】:
标签: c++ clion build-definition
我在CLion -> Settings -> Build, Execution, Deployment -> CMake 中有几个构建配置文件。无论我使用哪种编译器,如何为每个配置文件设置预处理器定义?
【问题讨论】:
标签: c++ clion build-definition
Settings -> Build, Execution, Deployment -> CMake。CMake options 文本框:-DYOUR_DEFINE_VARIABLE=1
if (YOUR_DEFINE_VARIABLE)
add_definitions(-DYOUR_DEFINE_VARIABLE=1)
endif (YOUR_DEFINE_VARIABLE)
【讨论】:
我没有尝试过,但这应该可以工作
if (CMAKE_CONFIGURATION_TYPES)
string(TOLOWER "${CMAKE_CONFIGURATION_TYPES}" CMAKE_CONFIGURATION_TYPES_LOWER)
else()
string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_CONFIGURATION_TYPES_LOWER)
endif()
foreach(config ${CMAKE_CONFIGURATION_TYPES_LOWER})
if (${config} MATCHES "debug")
#add preprocessor definition something like this bellow
add_definitions(-DFOO -DBAR ...)
elseif(${config} MATCHES "release")
#and so on...
endif()
endforeach()
因此,为了正确检查字符串,我们将构建配置类型转换为小写,然后检查类型中的 config 是否与此自定义配置类型匹配。如果是这样,那么我们可以添加一些预处理器定义等(
【讨论】:
CMake 选项卡包含的不是 cmake 配置,而是构建配置文件。
add_definitions 在现代 CMake 中是一种糟糕的风格。建议改用target_compile_definitions 等。