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

CMake中CMAKE_CONFIGURATION_TYPES与CMAKE_BUILD_TYPE的区别及相关术语含义

CMAKE_CONFIGURATION_TYPES 与 CMAKE_BUILD_TYPE 的区别及多配置/单配置构建系统说明

一、两个变量的核心区别

  • CMAKE_BUILD_TYPE

    • 仅适用于单配置构建系统(如Makefile、Ninja)
    • 用来指定唯一固定的构建类型,可选值通常为Debug、Release、RelWithDebInfo、MinSizeRel
    • 配置CMake时就得确定该值,后续编译只能生成对应类型的产物,切换类型需重新运行CMake配置
    • 用法示例:cmake -S . -B build -DCMAKE_BUILD_TYPE=Release,该build目录仅能编译Release版本
  • CMAKE_CONFIGURATION_TYPES

    • 专门用于多配置构建系统(如Visual Studio、Xcode)
    • 用来定义可选的构建类型集合,默认包含常用类型,也可自定义添加(比如set(CMAKE_CONFIGURATION_TYPES "Debug;Release;CustomOpt" CACHE STRING "" FORCE))
    • 配置CMake时仅声明可选类型,实际编译时直接在构建工具中选择具体类型即可,无需重新运行CMake
    • 用法示例:配置完成后,在VS工具栏的Debug/Release下拉框切换,就能编译对应版本的产物

二、单配置与多配置构建系统的具体含义

  • 单配置(single-config)构建系统

    • 一个构建目录仅对应一种构建类型,无法同时生成Debug和Release产物
    • 切换构建类型需重新创建构建目录,或清空现有目录后重新运行CMake配置
    • 代表工具:Makefile Generator、Ninja Generator
  • 多配置(multi-config)构建系统

    • 一个构建目录支持同时生成多种构建类型的产物,无需重新配置CMake
    • 切换构建类型仅需在构建工具内操作,比如VS的下拉框、Xcode的scheme切换
    • 代表工具:Visual Studio Generators、Xcode Generator

注意事项

在多配置系统中设置CMAKE_BUILD_TYPE会被CMake忽略;反之,单配置系统里CMAKE_CONFIGURATION_TYPES也无法生效,不要混淆使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 20:03:29