如何在CLion中为每个配置定义预处理器宏?

5

我在CLion -> 设置 -> 构建、执行、部署 -> CMake中有几个构建配置文件。无论使用哪个编译器,我该如何为每个配置文件设置预处理器定义?

2个回答

11
  1. 进入 设置 -> 构建、执行、部署 -> CMake
  2. 选择要设置预处理器定义的配置文件。
  3. CMake选项 字段中输入:-DYOUR_DEFINE_VARIABLE=1
  4. 在您的CMakeLists.txt中编写以下内容:
if (YOUR_DEFINE_VARIABLE)
    add_definitions(-DYOUR_DEFINE_VARIABLE=1)
endif (YOUR_DEFINE_VARIABLE)

新手在这里,为什么需要在CLion构建配置和CMakeLists中都进行设置? - Xmanoux
1
据我所知,CMake选项中的-D只是向cmake脚本添加一个本地变量,而add_definitions则将定义(-D)添加到编译器命令行。更多信息:add_definitionscmake options - volodya7292

0

我没有尝试过,但这应该可以工作

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()

因此,为了正确检查字符串,我们将构建配置类型转换为小写形式,然后检查类型是否与自定义配置类型匹配。如果匹配,则可以添加一些预处理器定义等(


它说什么? - golobitch
${CMAKE_CONFIGURATION_TYPES} 没有输出任何内容。我刚意识到 CMake 标签页里不是 cmake 配置,而是构建配置。 - volodya7292
1
在现代CMake中,全局add_definitions是一种不好的风格。建议使用target_compile_definitions等替代方法。 - Victor Sergienko
不知道。谢谢! - golobitch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接