You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Visual Studio 2019中使用自定义CMake版本进行Ninja构建?

解决VS2019中Ninja生成器无法使用自定义CMake版本的问题

当然可以在VS2019里搭配Ninja和自定义CMake版本完成构建,我之前也碰到过一模一样的情况——用Visual Studio生成器时自定义CMake正常,但切到Ninja就自动回退到集成版本。核心问题是VS2019对Ninja生成器的CMake路径优先级处理有特殊逻辑,需要你在配置里显式针对Ninja配置指定自定义CMake路径,而不是只依赖全局设置。

下面是具体的解决步骤:

1. 正确配置CMakeSettings.json

打开项目根目录下的CMakeSettings.json,确保你为每个使用Ninja的配置项单独指定cmakeExecutable路径,而不是只在全局或者其他生成器的配置里设置。示例配置如下:

{
  "configurations": [
    {
      "name": "Debug_Ninja",
      "generator": "Ninja",
      // 替换成你系统中自定义CMake的绝对路径
      "cmakeExecutable": "C:/Program Files/CMake/bin/cmake.exe",
      "configurationType": "Debug",
      "buildRoot": "${projectDir}\\out\\build\\${name}",
      "installRoot": "${projectDir}\\out\\install\\${name}",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "",
      "ctestCommandArgs": ""
    },
    {
      "name": "Release_Ninja",
      "generator": "Ninja",
      "cmakeExecutable": "C:/Program Files/CMake/bin/cmake.exe",
      "configurationType": "Release",
      "buildRoot": "${projectDir}\\out\\build\\${name}",
      "installRoot": "${projectDir}\\out\\install\\${name}",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "",
      "ctestCommandArgs": ""
    }
  ]
}

2. 检查VS的CMake全局设置

打开VS2019的「工具」→「选项」→「CMake」→「常规」,确保勾选了**「使用CMakeSettings.json中的CMake路径」**,这个选项会让VS优先使用你配置文件里指定的CMake,而不是强制用集成版本。

3. 清理旧构建缓存并重新生成

之前用集成CMake生成的缓存会干扰新配置,所以需要:

  • 手动删除buildRoot指定的目录(比如示例里的out/build/Debug_Ninja
  • 在VS的CMake菜单里选择「删除缓存并重新配置」

4. 验证配置是否生效

触发构建后,查看VS的「输出」窗口(切换到CMake输出频道),如果看到类似下面的日志,说明自定义CMake已经生效:

Using CMake executable: C:/Program Files/CMake/bin/cmake.exe

如果还是有问题,可以检查自定义CMake的路径是否正确(确保是绝对路径,没有拼写错误),或者尝试以管理员身份运行VS2019,避免权限问题导致无法读取自定义CMake。

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

火山引擎 最新活动