有没有办法强制 Visual Studio 2017 接受 CMAKE 2.8.12.2
Posted
技术标签:
【中文标题】有没有办法强制 Visual Studio 2017 接受 CMAKE 2.8.12.2【英文标题】:Is there a way to force Visual studio 2017 to accept a CMAKE 2.8.12.2 【发布时间】:2021-09-04 02:51:32 【问题描述】:所以我正在尝试在我们大学的 Linux 服务器上构建一个基本的 C++ 项目。 我去查看了服务器上的CMake版本,是2.8.12.2
我喜欢使用 Visual Studio,所以我尝试在通过 SSH 连接到我的大学服务器后使用 Visual Studio 在其上构建一个基本的 hello world 程序。
我在 Visual Studio 2017 中收到以下消息: CMake 3.8.x 或更高版本在远程系统上不可用。请参阅https://aka.ms/linuxcmakeconfig 了解更多信息
有没有办法强制让Visual Studio接受低版本的CMake 2.8.12.2
我对@987654325@ 进行了如下更改:
cmake_minimum_required(VERSION 2.8.12.2)
.
但 Visual Studio 仍然抱怨大学服务器中没有 CMake 3.8 版。
我已附上以下屏幕截图:
有人告诉我使用一些名为 CLion 的 IDE。但我知道 Visual Studio 是更好的选择,我一生都在现实世界/非大学环境中使用它。【问题讨论】:
“更好”是 100% 主观的。 CLion 是一个功能完善的 IDE。 我什至在 cmake 网站上找不到 3.0 之前的 cmake 版本的文档。 2.8 严重过时。我会把关于更新的错误放在某人的耳朵里。 @Shawn 文档在那里,但格式不太方便,请参阅本页上的“旧参考文档”:cmake.org/documentation@wsr007 旧 cmake 版本的问题是 VS 代码确实需要 cmake生成附加信息。如果你想使用这个旧版本,你需要手动调用 cmake 命令行工具,或者通过 VS Code 特定功能和 IDE 可能缺少一些信息。替代方法是设置一个尽可能接近的环境大学机器尽可能在本地开发,只传输最终结果 @f*** 感谢 Cmake 文档。我会检查一下,看看它最终会把我带到哪里。 (无法抗拒挑战)。是的,正如你所说,现在我将在 Visual Studio 中调试编译和构建我的程序。在将它粘贴到我已经设置为 SSH 并在大学机器上构建以进行最终构建和推送的 Clion 之前。如果我成功地根据您发送的文档进行设置。我会把答案贴在这里。谢谢。 【参考方案1】:TL;DR
不,这不可能。
原因
Visual Studio 2017 文档指出here:
Visual Studio 中的 CMake 支持需要 CMake 3.8 中引入的服务器模式支持。
这意味着 VS 需要 cmake-server(7) API 来查询信息,例如 CMake 将构建的二进制文件放在哪里、使用了哪些包含路径等。没有这些信息,VS 将无法提供 IDE 的所有有用功能,例如作为调试,包括路径检查/自动完成等。所以没有办法,VS(或任何其他 IDE,如 CLion)的 CMake 集成将与尚未提供服务器模式的 CMake 版本一起使用,这绝对是所有 2.x 版本的情况。
更多背景
服务器模式实际上是introduced in CMake 3.7。我不知道为什么 VS 文档建议它是 3.8 ?♂️。但我想这对你的情况来说并不是一个重要的区别。 较新版本的 Visual Studio(自 2019 年起)甚至使用 CMake 3.14 中引入的较新的 cmake-file-api(7),如 here 所述:
Cmake 版本 3.14 或更高版本应安装在目标机器上。
服务器模式甚至在 3.15 中被弃用,并在 3.20 中完全删除,以支持基于文件的 API。
VS 开发人员甚至维护自己的 CMake 分支:github.com/microsoft/CMake。 这是因为服务器模式没有为他们提供他们需要的所有信息,正如他们在blog 中所述:
我们在 github 上的 CMake 分支的一个不同之处在于 Visual Studio 中的目标视图功能所需的回溯信息。在 CMake 3.14 之前,我们需要来自 fork 的 CMake 版本,以便 Targets View 正常工作。现在,使用基于文件的 API,这不再是必需的。
所以也许对于 VS 2017,您应该使用 Microsoft 构建的 CMake 二进制文件。对于 VS 2019+,“库存”CMake 应该没问题。到目前为止,他们仍然维护他们的分叉,但我还没有找到任何表明你需要使用它的来源。可能是因为微软在过去几年更多地参与了 CMake 开发,并且也为上游存储库做出了贡献,例如cmake-presets(7)是微软与Kitware合作的成果。
推荐解决方案
正如@Shawn 已经评论的那样,CMake 2.8.12 已经严重过时(2013-10-08 发布),最好的解决方案是要求您大学的管理员将 CMake 更新到更新的版本。这还有一个额外的优势,您可以使用"Modern CMake" 技术并从中受益。
【讨论】:
以上是关于有没有办法强制 Visual Studio 2017 接受 CMAKE 2.8.12.2的主要内容,如果未能解决你的问题,请参考以下文章
强制 Visual Studio 2010 将 CSS 放置在非内联文件中?
在不安装 Visual Studio 2010 的情况下使用 vc100 平台工具集?