代码之家  ›  专栏  ›  技术社区  ›  Deepak Selvakumar

VS2017使用交叉编译器构建x64项目

  •  0
  • Deepak Selvakumar  · 技术社区  · 6 年前

    我有一个c++的大项目,我使用cmake生成.proj文件。

    使用支持生成VS2017项目文件的CMake版本3.12.2。

    CMAKE_GENERATOR="Visual Studio 15 2017 Win64"

    这将在生成时创建一个.proj文件并用于编译。

    但是从构建日志中,我发现visualstudio编译器cl.exe是从交叉编译位置获取的

    C:/Program Files (x86)/Microsoft Visual Studio/2017/BuildTools/VC/Tools/MSVC/14.15.26726/bin/Hostx86/x64/cl.exe
    

    但我希望它是建立严格使用x64编译器。从/Hostx64/x64/cl.exe

    但是我怎么用cmake文件来做呢?

    我没有找到任何关于这方面的参考,除了上面的cmake生成器。

    注意:我希望它是用x64编译器构建的,因为我链接到boost库,boost库也是用x64编译器编译的

    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之间有什么区别?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Matthieu Brucher    6 年前

    使用 -T host=x64 (见 https://cmake.org/cmake/help/v3.11/generator/Visual%20Studio%2015%202017.html )使用本机64位编译器。

        2
  •  0
  •   Florian Wolters    5 年前

    我认为在Microsoft Windows操作系统上设置构建系统、编译器、体系结构、工具集和Windows SDK的显式(我认为也是推荐的)方法是使用以下CMake命令行参数:

    -G "Visual Studio 15 2017"
    -A x64
    -T v141,host=x64,version=14.12.25827
    -DCMAKE_CXX_COMPILER:FILEPATH=cl
    -DCMAKE_C_COMPILER:FILEPATH=cl
    -DCMAKE_SYSTEM_VERSION:STRING=10.0.16299.0
    

    这将在我的系统上设置编译器可执行文件,如下所示:

    %PROGRAMFILES(X86)%\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.12.25827\bin\ \ x64个 \cl.exe

    这个 -A x64 ,host=x64 部分 -T 参数设置粗体部分。

    v141 )小版本呢 ,version=14.12.25827 .

    "Visual Studio 15 2017 Win64" "[...] Win64"