vs2017实现linux远程编译报错“CMake 缺少以下功能:serverMode“解决方案(转)

文章讲述了在Windows系统上使用CMake2017进行Linux远程调试和编译时遇到的serverMode缺失问题,提到了不同CMake版本对serverMode的支持情况,以及如何在不同版本间切换或指定特定版本的解决方法。

背景
window系统vs2017使用cmake实现linux远程调试和编译时,搭建的环境报CMake 缺少以下功能:“serverMode”。请参阅 https://aka.ms/linuxcmakeconfig 了解详细信息错误,如何解决?
经排查,发现远程开发环境的cmake版本不支持serverMode模式,因此,无法实现远程编译
解决方案
验证远程目标服务器的cmake支持的能力,执行以下命令:cmake -E capabilities

输出结果如下:
{“fileApi”:{“requests”:[{“kind”:“codemodel”,“version”:[{“major”:2,“minor”:3}]},{“kind”:“cache”,“version”:[{“major”:2,“minor”:0}]},{“kind”:“cmakeFiles”,“version”:[{“major”:1,“minor”:0}]},{“kind”:“toolchains”,“version”:[{“major”:1,“minor”:0}]}]},“generators”:[{“extraGenerators”:[],“name”:“Watcom WMake”,“platformSupport”:false,“toolsetSupport”:false},{“extraGenerators”:[],“name”:“Ninja Multi-Config”,“platformSupport”:false,“toolsetSupport”:false},{“extraGenerators”:[“CodeBlocks”,“CodeLite”,“Eclipse CDT4”,“Kate”,“Sublime Text 2”],“name”:“Ninja”,“platformSupport”:false,“toolsetSupport”:false},{“extraGenerators”:[“CodeBlocks”,“CodeLite”,“Eclipse CDT4”,“Kate”,“Sublime Text 2”],“name”:“Unix Makefiles”,“platformSupport”:false,“toolsetSupport”:false},{“extraGenerators”:[],“name”:“Green Hills MULTI”,“platformSupport”:true,“toolsetSupport”:true}],“serverMode”:false,“version”:{“isDirty”:false,“major”:3,“minor”:21,“patch”:1,“string”:“3.21.1”,“suffix”:“”}}

可以看到参数serverMode为false,因此远程编译失败,如何将参数置为true?除了换cmake的版本,目前没有想到其他的解决办法,我尝试从相同版本cmake使用源码编译的方式,去寻找与之相关联的参数,但均尝试失败。目前在centos系统下,3.17.1的版本该模式为true,而3.21则不行

注意事项:

如何目标服务器有多个版本的cmake,在本地的CMakeSettings.json文件中"cmakeExecutable"字段可以指定使用哪个cmake
其他变量参数应尽可能使用绝对路径,避免使用类似于$HOME等宏定义变量,防止于windows的环境变量冲突
参考文献
https://learn.microsoft.com/zh-cn/cpp/linux/cmake-linux-configure?view=msvc-170
https://learn.microsoft.com/zh-cn/cpp/build/get-started-linux-cmake?view=msvc-170
————————————————
版权声明:本文为优快云博主「spirits_of_snail」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/qikaihuting/article/details/132448341

ps:经验证,cmake3.19.8版本也可以,下载路径:https://cmake.org/files/v3.19/

当使用 CMake GUI 将工程换为 VS2017 解决方案时出现 `No cmakeC_compiler` 错误,通常是由于 CMake 无法找到合适的 C 编译器所致。以下是一些可能的解决方法: ### 1. 检查 Visual Studio 安装 确保 Visual Studio 2017 已正确安装,并且包含了 C++ 开发工作负载。安装 Visual Studio 时,需要勾选“使用 C++ 的桌面开发”工作负载,因为该工作负载包含了所需的 C 和 C++ 编译器。 ### 2. 设置环境变量 CMake 需要知道编译器的位置,而环境变量可以帮助 CMake 找到这些信息。可以手动设置 `PATH` 环境变量,将 Visual Studio 2017编译器路径添加进去。一般来说,编译器路径类似于: ```plaintext C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64 ``` 这里的 `Community` 是 Visual Studio 的版本,`14.16.27023` 是 MSVC 工具集的版本号,实际路径可能会因安装情况而有所不同。 ### 3. 在 CMake GUI 中指定编译器 在 CMake GUI 中,可以手动指定 C 和 C++ 编译器。具体步骤如下: - 打开 CMake GUI,设置好源代码路径和构建路径。 - 点击“Configure”按钮。 - 在弹出的“Specify the generator for this project”对话框中,选择“Visual Studio 15 2017 Win64”(如果是 64 位系统)。 - 点击“Next”,在“Specify toolset”中选择合适的工具集。 - 点击“Finish”。 - 如果仍然出现 `No cmakeC_compiler` 错误,可以在 CMake GUI 的“CMake Cache Entries”列表中找到 `CMAKE_C_COMPILER` 和 `CMAKE_CXX_COMPILER` 项,手动指定编译器的路径。例如,`CMAKE_C_COMPILER` 可以设置为: ```plaintext C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.16.27023/bin/Hostx64/x64/cl.exe ``` `CMAKE_CXX_COMPILER` 可以设置为类似的路径。 - 再次点击“Configure”按钮,然后点击“Generate”按钮生成 VS2017 解决方案。 ### 4. 使用 Visual Studio 命令提示符 打开“x64 Native Tools Command Prompt for VS 2017”(如果是 64 位系统),该命令提示符已经设置好了 Visual Studio 的环境变量。在命令提示符中运行 CMake 命令来生成解决方案: ```bash mkdir build cd build cmake -G "Visual Studio 15 2017 Win64" .. ``` ### 5. 检查 CMake 版本 确保使用的是较新的 CMake 版本,旧版本的 CMake 可能存在与 Visual Studio 2017 兼容性的问题。可以从 CMake 官方网站(https://cmake.org/download/)下载最新版本的 CMake 并安装。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值