当前位置: 首页 > news >正文

CMake Debug/Release配置生成器表达式解析

在 CMake 中,CONFIG:Debug 生成器表达式中的 Debug/Release 配置是由构建系统在运行时决定的,具体取决于以下两种场景:

1. 单配置生成器(如 Makefile、Ninja)

  • 在配置阶段通过 CMAKE_BUILD_TYPE 指定:
    cmake -DCMAKE_BUILD_TYPE=Debug ..   # 设置为 Debug
    cmake -DCMAKE_BUILD_TYPE=Release .. # 设置为 Release
    
  • 此时 $<$<CONFIG:Debug>:DEBUG> 会自动检测该值,若为 Debug 则添加 DEBUG 宏定义。

2. 多配置生成器(如 Visual Studio、Xcode、Ninja Multi-Config)

  • 构建时通过命令行或 IDE 选择配置:
    cmake --build . --config Debug   # 构建 Debug 版本
    cmake --build . --config Release # 构建 Release 版本
    
  • 此时生成器表达式在构建阶段动态判断当前配置(无需提前设置 CMAKE_BUILD_TYPE)。

关键点总结:

场景配置设置方式表达式生效时机
单配置生成器cmake -DCMAKE_BUILD_TYPE=XXX配置阶段确定
多配置生成器cmake --build --config XXX 或 IDE构建阶段动态判断

示例行为:

  • 当构建 Debug 时:
    $<$<CONFIG:Debug>:DEBUG>  → 添加 -DDEBUG
    $<$<CONFIG:Release>:NDEBUG> → 忽略
    
  • 当构建 Release 时:
    $<$<CONFIG:Debug>:DEBUG>  → 忽略
    $<$<CONFIG:Release>:NDEBUG> → 添加 -DNDEBUG
    

验证方法:

在构建命令后检查编译参数:

# Debug 构建下查看宏定义
cmake --build . --config Debug --verbose | grep "DEFINES"# 输出应包含:-DDEBUG

最佳实践:始终通过生成器表达式处理配置相关逻辑(如你的代码所示),这样能确保单配置和多配置生成器均兼容。

http://www.dtcms.com/a/309304.html

相关文章:

  • 加密与安全
  • ACM SIGCOMM 2024论文精选-01:5G【Prism5G】
  • 让 OAuth 授权码流程更安全的 PKCE 技术详解
  • Unity相机控制
  • C#线程同步(三)线程安全
  • LT3045EDD#TRPBF ADI亚德诺半导体 线性稳压器 电源管理应用设计
  • PCB 控深槽如何破解 5G 基站 120℃高热魔咒?
  • Webhook是什么
  • 【Nginx反向代理】通过Nginx反向代理将多个后端server统一到同一个端口上的方法
  • 开源爬虫管理工具
  • [ Leetcode ]---快乐数
  • 【Redis】key的设计格式
  • Django模型查询与性能调优:告别N+1问题
  • 第三篇:几何体入门:内置几何体全解析
  • 【LLM】讲清楚MLA原理
  • Linux(15)——进程间通信
  • EasyExcel 公式计算大全
  • Spring Boot Actuator 保姆级教程
  • 包裹移动识别误报率↓76%:陌讯时序建模算法实战解析
  • C#实现左侧折叠导航菜单
  • 数据结构(9)栈和队列
  • 完整的 Spring Boot + Hibernate/JPA + P6Spy 配置指南
  • 凸优化:常见的优化问题,偏统计视角
  • cesium FBO(四)自定义相机渲染到Canvas(离屏渲染)
  • android APT技术
  • 今日链表系列
  • 京东零售在智能供应链领域的前沿探索与技术实践
  • X2Doris是SelectDB可视化数据迁移工具,安装与部署使用手册,轻松进行大数据迁移
  • Blender 智能模型库 | 人物·建筑·场景·机械等 近万高精度模型
  • 无人机自动跟随模块技术分析