我在CLion -> 设置 -> 构建、执行、部署 -> CMake
中有几个构建配置文件。无论使用哪个编译器,我该如何为每个配置文件设置预处理器定义?
我在CLion -> 设置 -> 构建、执行、部署 -> CMake
中有几个构建配置文件。无论使用哪个编译器,我该如何为每个配置文件设置预处理器定义?
设置 -> 构建、执行、部署 -> CMake
。CMake选项
字段中输入:-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()
因此,为了正确检查字符串,我们将构建配置类型转换为小写形式,然后检查类型是否与自定义配置类型匹配。如果匹配,则可以添加一些预处理器定义等(
CMake
标签页里不是 cmake 配置,而是构建配置。 - volodya7292add_definitions
是一种不好的风格。建议使用target_compile_definitions
等替代方法。 - Victor Sergienko
-D
只是向cmake脚本添加一个本地变量,而add_definitions
则将定义(-D
)添加到编译器命令行。更多信息:add_definitions,cmake options。 - volodya7292