使用已安装的 CMake 而不是 Visual Studio 2017 中嵌入的 CMake

2024-05-05

我有一个 CMake 项目。它使用实际安装的 CMake 版本 (3.11.0 rc2) 支持的最新版本 Boost (1.66.0),但在之前的版本 (3.10.0) 中不受支持。

如果我从命令行使用 CMake 构建它,一切正常,但如果我在 Visual Studio 2017 中打开该文件夹,则会收到错误消息,因为 Visual Studio 使用的 CMake 安装不是我的,而是嵌入其安装的:输出面板完整的 cmake 命令路径是C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2017\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe,这不是我安装的版本,它也是以前的版本(3.10.0),因此项目无法编译。

有没有办法告诉 Visual Studio 使用我的 CMake 安装而不是它的安装?


否(除了下面所示的技巧),您在执行时只能使用自己的 CMake 版本使用 CMake 进行 Linux 开发的 Visual C++ https://blogs.msdn.microsoft.com/vcblog/2017/08/25/visual-c-for-linux-development-with-cmake/在远程机器上CMakeSettings.json像这样:

{
      "name": "Linux-Debug",
      "generator": "Unix Makefiles",
      "remoteMachineName": "${defaultRemoteMachineName}",
      "configurationType": "Debug",
      "remoteCMakeListsRoot": "/var/tmp/src/${workspaceHash}/${name}",
      "cmakeExecutable": "/usr/local/bin/cmake",
      "buildRoot": "${env.LOCALAPPDATA}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
      "remoteBuildRoot": "/var/tmp/build/${workspaceHash}/build/${name}",
      "remoteCopySources": true,
      "remoteCopySourcesOutputVerbosity": "Normal",
      "remoteCopySourcesConcurrentCopies": "10",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "",
      "ctestCommandArgs": "",
      "inheritEnvironments": [ "linux-x64" ]
}

但是您可以利用以下功能来支持功能请求cmakeExecutable更一般的属性:

  • CMakeSettings.json:cmakeExecutable 仅适用于远程计算机 https://blogs.msdn.microsoft.com/vcblog/2017/08/25/visual-c-for-linux-development-with-cmake/

一些背景信息

正如 @usr1234567 的答案一样,Visual Studio 2017 使用 - 从版本 15.6.1 开始 - 它是 CMake 自己的分支:

  • https://github.com/Microsoft/CMake/tree/cmake-daemon https://github.com/Microsoft/CMake/tree/cmake-daemon

Visual Studio 2017 附带的版本不是官方版本,您可以看到正在调用:

> "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake" --version
cmake version 3.10.18011902-MSVC_2

因此,我不确定官方 CMake 版本是否能够很好/完全集成到 Visual Studio 2017 中。但是已经有人请求将 Microsoft 特定更改合并回 CMake 的主分支:

  • 问题 #16998:Visual Studio 2017:将 Microsoft cmake-daemon 分支合并到 master https://gitlab.kitware.com/cmake/cmake/issues/16998

编辑:可能的解决方法

一个简短的测试表明,我可以通过对 Visual Studio 的 CMake 文件夹进行简单的重命名并将其替换为指向系统安装的 CMake 版本的符号链接(来自cmd具有管理权限的提示):

> ren "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake" _CMake
...
> mklink /d "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake" "C:\Program Files\CMake"
...

Warning:在更新 Visual Studio 2017 之前,您必须撤消此操作。否则 VS2017 udpate 进程将替换/覆盖您原来的 CMake 安装。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用已安装的 CMake 而不是 Visual Studio 2017 中嵌入的 CMake 的相关文章

随机推荐