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

如何在终端CMake中复用Visual Studio的CMakeSettings.json配置?

脱离Visual Studio复用CMakeSettings.json配置的实操方法

首先明确:CMakeSettings.json确实是Visual Studio专属的配置文件,原生CMake命令行不直接识别这个文件,但你完全可以把里面的配置映射成CMake原生命令参数,或者转成官方通用的预设文件,不用依赖VS IDE就能实现完全一致的构建、安装效果,对初学者来说门槛很低。

第一步:先搞懂CMakeSettings.json里存的到底是什么

你在这个文件里配的所有内容,本质上都是VS在后台调用CMake时传的启动参数,没有任何VS独有的特殊逻辑,常用配置无非这几类:

  • 构建架构(x86/x64/arm64)、构建类型(Debug/Release/RelWithDebInfo等)
  • 构建中间产物、最终输出文件的存放路径
  • 使用的CMake生成器(比如VS默认配的Ninja、VS MSBuild生成器)
  • 自定义CMake缓存变量:比如编译开关、第三方库依赖路径、安装路径这类你自己加的项目配置

第二步:直接映射成CMake原生命令

CMake原生工作流就是两步:配置生成构建系统、执行构建/安装,所有配置参数都在配置阶段传入就行,和VS后台跑的逻辑完全一致。
举个最常见的x64 Release配置的例子,你在项目根目录(放顶层CMakeLists.txt的文件夹)打开终端,直接敲命令就行:

# 配置阶段:对应你在VS里选中对应配置时,后台自动执行的操作
cmake -S . -B out/build/x64-release `
  -G "Ninja" `
  -DCMAKE_BUILD_TYPE=Release `
  -DCMAKE_INSTALL_PREFIX=./install/x64-release `
  # 后面把你CMakeSettings.json里variables字段下的所有自定义项,按-D参数名=值的格式追加就行

每个参数的作用不用死记:

  • -S .:指定源码根目录为当前终端所在路径
  • -B 路径:指定构建产物的存放目录,和你在CMakeSettings.json里配的buildRoot字段完全对应
  • -G 生成器名称:对应配置里选的生成器,之前VS默认用Ninja就填Ninja,想调用MSVC编译器也可以填"Visual Studio 17 2022" -A x64,只要你装了VS的生成工具,不用开IDE就能正常用
  • -DCMAKE_BUILD_TYPE=xxx:指定构建类型,用Ninja、NMake这类单配置生成器时需要传,用VS MSBuild这类多配置生成器可以不在这步传
  • -DCMAKE_INSTALL_PREFIX=路径:指定执行安装命令时文件的输出路径,对应CMakeSettings.json里的installRoot字段
  • 所有自定义变量:比如你之前配了BUILD_TESTS:BOOL=true,就追加-DBUILD_TESTS=ON即可,BOOL类型的值用ON/OFF对应true/false就行

配置完成后,构建、安装的命令非常简单,和你在VS里点"生成""安装"的效果完全一致:

# 构建项目,对应VS里的"生成解决方案"
cmake --build out/build/x64-release --config Release
# 执行安装,对应VS里的"安装"项目
cmake --install out/build/x64-release --config Release

小提示:不管用单配置还是多配置生成器,都可以带上--config参数指定构建类型,不会报错,省的记不同生成器的规则。

第三步:实现和VS一样一键切换配置的效果

如果你嫌每次敲长命令麻烦,有两个非常简单的方案:

  • 写简单的终端脚本:Windows下写bat批处理、Linux/macOS写shell脚本,把不同配置的命令存进去,双击或者敲个短命令就能跑,比在VS里下拉选配置还快
  • 转成CMake官方通用的预设文件CMakePresets.json:现在有现成的小工具可以直接把你现有的CMakeSettings.json转换成这个官方格式,这个文件是CMake 3.19之后原生支持的,不管是纯命令行、VS、VS Code、CLion都能识别,之后不用维护两套配置,命令行切配置只需要敲cmake --preset 配置名就行,非常方便。

初学者避坑提醒

一定要保持和VS一样的 out-of-source 构建习惯,不要直接在源码根目录跑cmake命令,始终用-B参数指定独立的构建目录,避免生成的临时文件把源码目录搞乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:09:18