如何强制Visual Studio 2017兼容Linux服务器的CMake 2.8.12.2版本
你修改CMakeLists.txt的cmake_minimum_required配置没用,是因为这个3.8的版本要求是Visual Studio 2017 自带的Linux远程CMake开发模块的硬限制,不是你的项目的版本要求。VS的远程CMake构建流程依赖CMake 3.8及以上版本新增的服务器模式、路径映射、生成器交互等特性,2.8.12.2版本没有对应接口,所以VS会在构建前先校验远程CMake版本,不会读取你项目里的版本配置。
下面是两个可行的解决方案:
方案1:服务器用户目录下安装独立高版本CMake(推荐,无权限要求,保留所有VS CMake集成功能)
学校服务器一般不会给普通用户root权限,你可以直接安装CMake到自己的用户目录,不会影响系统全局配置:
- 下载对应Linux架构的CMake预编译二进制包(选择3.10到3.20之间的版本即可兼容VS2017),解压到你home目录下的任意路径,比如
~/cmake/ - 打开VS2017的
工具 > 选项 > 跨平台 > 连接管理器,选中你配置的学校服务器连接,点击更新旁边的编辑,在弹出的配置页里找到CMake路径配置项,填写你刚才解压的CMake路径,比如/home/你的用户名/cmake/bin/cmake - 保存后重新连接服务器构建即可,不会再触发版本校验,所有VS的CMake集成功能都能正常使用。
方案2:改用VS的Makefile项目,绕开CMake版本校验
如果你一定要使用服务器自带的2.8.12.2版本CMake,可以放弃VS自带的CMake项目模板,改用Makefile项目类型:
- 新建项目时选择
Visual C++ > 跨平台 > Linux > Makefile项目 - 在项目属性的
构建事件里,自定义远程构建命令,手动调用服务器上的cmake和make命令 - 这种方式VS只会作为远程命令执行和调试的通道,不会校验CMake版本,缺点是你需要自己配置构建规则、头文件路径映射、IntelliSense同步等配置,比原生CMake集成麻烦。
不建议通过修改VS配置文件的方式强行绕过版本校验,就算绕开了校验,VS的CMake集成需要的很多接口在2.8版本上不存在,会出现增量构建失效、配置无法同步、IntelliSense报错等各类问题,稳定性极差。
内容的提问来源于stack exchange,提问作者wsr007
相关产品推荐
相关产品推荐

