首页 > 解决方案 > 让 CMake 定义应该使用哪个 VS 链接器而不指定路径

问题描述

概括

给出了以下场景:

所以基本上观察到的是:

Visual Studio 似乎在编译过程中使用 32Bit 链接器,尽管cmake -G "Visual Studio 15 Win64"在生成项目文件时进行了设置。然后 32 位链接器耗尽堆空间,因此使用 64 位链接器重新尝试该过程。然而,要找到所述链接器,系统路径会被检查,并link.exe首先找到 Git 安装提供的路径。此时,此链接器提供了源目录和参数,但由于它是不同的应用程序,因此构建过程会失败。

到目前为止,我只是猜测为什么 Visual Studio 能够成功编译和链接。目前的猜测是 Visual Studio 在检查路径之前检查了一些默认位置,因此link.exe找到了正确的 64 位。这反过来又允许构建和链接过程成功完成。

尝试的解决方案

所以我检查了一些方法来解决这个问题:

有效解决方案的问题在于,它们都需要设置正确链接器的显式路径,以便能够通过脚本进行编译。另外,它CMakeCache.txt是在构建过程中生成的,所以设置到中途意味着整个构建过程无法执行。

问题

是否可以在通过调用执行构建管道之前配置 CMake cmake,以便使用该位置的 64Bit 链接器D:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/Tools/MSVC/14.15.26726/bin/Hostx86/x64/link.exe而无需在某处明确设置此路径(例如,在调用期间通过 CMake 参数cmake -G)?

否则,我们的贡献者必须应用个性化的解决方案并在他们的系统上单独设置这些路径。我正在尝试找到一个解决方案,其中我们的脚本调用cmake -G以及cmake之后的 -build 调用已经配置,以便从一开始就使用 64 位链接器并省略 32 位链接器。

另一个相关选项可能是 CMake 工具链文件:CMake:指定构建工具链

但是,这仍然需要手动设置路径。32Bit 链接器是自动找到的,是否没有办法在不提供显式路径的情况下自动设置 64Bit 链接器?

提前谢谢你,欢迎任何输入。

标签: c++windowsvisual-studiocmakevisual-studio-2017

解决方案


推荐阅读