You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让CMake仅生成Release/Debug配置并将Release设为RelWithDebInfo?

配置CMake仅生成Release/Debug并将Release映射为RelWithDebInfo

可以通过以下CMake配置实现需求:

  1. 限制仅生成Debug和Release两种构建配置
    针对MSVC、Xcode这类多配置生成器,设置CMAKE_CONFIGURATION_TYPES变量,强制只保留Debug和Release:
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Build configurations" FORCE)
  1. 将Release配置的参数替换为RelWithDebInfo的参数
    把Release对应的编译、链接参数全部替换为RelWithDebInfo的默认参数,这样选择Release构建时,实际会以优化+保留调试信息的方式编译:
# 替换C语言编译参数
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELWITHDEBINFO}" CACHE STRING "C Release flags" FORCE)
# 替换C++语言编译参数
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}" CACHE STRING "CXX Release flags" FORCE)
# 替换各类链接器参数
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}" CACHE STRING "EXE Linker Release flags" FORCE)
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO}" CACHE STRING "Shared Linker Release flags" FORCE)
set(CMAKE_STATIC_LINKER_FLAGS_RELEASE "${CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO}" CACHE STRING "Static Linker Release flags" FORCE)
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO}" CACHE STRING "Module Linker Release flags" FORCE)

补充说明

  • 配置中的FORCE选项用于覆盖CMake默认的参数设置,确保修改生效
  • 对于GCC/Clang这类单配置生成器,当指定-DCMAKE_BUILD_TYPE=Release时,也会自动使用RelWithDebInfo的参数编译
  • 这样配置后,Qt Creator中选择Release构建时,实际会生成带调试信息的优化版本,解决Qt Creator无法识别RelWithDebInfo配置的问题

内容的提问来源于stack exchange,提问作者Alexey Starinsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:25:11