【发布时间】:2018-10-15 09:58:33
【问题描述】:
我有一个巨大的 C++ 项目,我使用 cmake 生成 .proj 文件。
使用支持生成 VS2017 proj 文件的 CMake 版本 3.12.2。
所以对于 windows 64 位编译我使用下面的生成器
CMAKE_GENERATOR="Visual Studio 15 2017 Win64"
这会在构建时创建一个 .proj 文件并用于编译。
但是从构建日志中我发现 Visual Studio 编译器 cl.exe 取自交叉编译位置
C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC/Tools/MSVC/14.15.26726/bin/Hostx86/x64/cl.exe
/Hostx86/x64/cl.exe 正在使用中。
但我希望它严格使用 x64 编译器构建。来自 /Hostx64/x64/cl.exe
我读过其他问题,人们提到要在 .proj 文件中添加一些标签以强制 vs 使用 x64 编译器。
但是我该如何使用 cmake 文件呢?
除了上面提到的 cmake 生成器之外,我没有找到任何关于这方面的参考。
谁能帮我如何使用cmake严格让VS使用x64编译器?
注意:我希望它使用 x64 编译器构建,因为我正在链接到也使用
编译的 boost 库address-model=64 architecture=x86
在编译主项目时,我遇到了与平台相关的错误。
fatal error LNK1112: module machine type 'x86' conflicts with target machine type 'x64'
这就是我想用 x64 编译器编译主项目的原因。
还有,Hostx86/x64/cl.exe 和 Hostsx64/x64/cl.exe 有什么区别?
【问题讨论】:
-
您误解了“主机 x86,目标 x64”编译器的性质。它肯定会创建 x64 模块,而不是 x86 模块。我怀疑链接器错误是由于将 x86 和 x64 输出放在同一目录中造成的。
标签: c++ visual-studio boost cmake