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

Jep*_*sen 10 cmake visual-studio-2017

我有一个 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 安装而不是它的安装?

Flo*_*ian 7

不可以(下面所示的技巧除外),在远程计算机上使用CMake 进行 Visual C++ for Linux 开发CMakeSettings.json时,只能使用自己的 CMake 版本,如下所示:

{
      "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" ]
}
Run Code Online (Sandbox Code Playgroud)

但您可以更广泛地利用该属性来支持功能请求cmakeExecutable

一些背景信息

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

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
Run Code Online (Sandbox Code Playgroud)

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

编辑:可能的解决方法

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

> 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"
...
Run Code Online (Sandbox Code Playgroud)

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


usr*_*567 -1

对于 Visual Studio 2015,不支持使用外部 CMake。
资料来源:玛丽安对德米特里的问题/评论的回答

最近一篇博客文章中的措辞(2018 年 1 月)

为了确保您能够访问 CMake 的最新功能,我们已将 Visual Studio 附带的 CMake 版本从 3.9 升级到 3.10。

并不表明这没有改变。

更新:Visual Studio 最近提供了一个预览版,包括 CMake 3.11。