无需指定路径,如何让CMake自动选择正确的VS 64位链接器
CMake生成VS2017 x64项目自动选择64位宿主链接器解决方案
核心可行方案(无硬编码路径、全自动化)
方案1:预加载VC64位工具链环境后执行CMake
这是兼容性最好、无需额外配置的方案,原理是通过VS自带的环境配置脚本自动将64位宿主工具链路径添加到系统Path最优先级,CMake会自动识别使用正确的link.exe,同时规避Git自带的link.exe冲突。
自动化脚本示例(Windows bat脚本):
@echo off :: 用VS自带的vswhere工具自动检索VS2017安装路径,无需硬编码 for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -version [15.0,16.0) -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do ( set VS2017_PATH=%%i ) :: 加载64位工具链环境,自动将Hostx64/x64路径添加到Path最前面 call "%VS2017_PATH%\VC\Auxiliary\Build\vcvars64.bat" :: 正常执行CMake配置、构建流程即可,无需额外参数 cmake -G "Visual Studio 15 2017" -A x64 -S 你的源码路径 -B build64 cmake --build build64 --config Release
贡献者只需安装VS2017和CMake即可直接执行脚本,无需任何手动配置。
方案2:升级CMake版本后使用host=x64工具集参数
你之前使用-T host=x64未生效,大概率是使用的CMake版本低于3.12,该参数是CMake 3.12及以上版本才支持的Visual Studio生成器专属参数,作用就是指定使用64位宿主的MSVC工具链。
操作步骤:
- 升级CMake到3.12或更高版本
- 直接执行配置命令即可:
cmake -G "Visual Studio 15 2017" -A x64 -T host=x64 -S 你的源码路径 -B build64
CMake会自动检索并选择Hostx64/x64路径下的link.exe,无需手动指定路径。
补充说明
两种方案都不需要手动修改CMakeCache.txt、不需要硬编码路径到工具链文件、不需要贡献者手动调整系统Path变量,完全可以集成到自动化构建流程中,同时解决32位链接器堆内存不足、Git自带link.exe冲突两个问题。
内容的提问来源于stack exchange,提问作者Koenigsberg
相关产品推荐
相关产品推荐

