背景
- 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则不行文章来源:https://www.toymoban.com/news/detail-666581.html
-
注意事项:文章来源地址https://www.toymoban.com/news/detail-666581.html
- 如何目标服务器有多个版本的cmake,在本地的
CMakeSettings.json
文件中"cmakeExecutable"字段可以指定使用哪个cmake - 其他变量参数应尽可能使用绝对路径,避免使用类似于
$HOME
等宏定义变量,防止于windows的环境变量冲突
- 如何目标服务器有多个版本的cmake,在本地的
参考文献
- 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
到了这里,关于vs2017实现linux远程编译报错“CMake 缺少以下功能:serverMode“解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!