繁体   English   中英

Qt Windows x64构建在IDE中成功,但在命令行中不成功

[英]Qt Windows x64 build succeeds in IDE but not on the command line

我有一个Qt项目正在尝试自动化。 在Windows上,我同时为32位和64位平台构建。 我正在使用Visual Studio2013。已安装以下Qt工具包:桌面Qt 5.5.1 MSVC2013 32位和桌面Qt 5.5.1 MSVC2013 64位。 可以构建和运行所有四个版本(32位调试和发行版以及64位调试和发行版),而不会在IDE中造成任何麻烦。 不幸的是,从命令行构建失败并显示以下错误:

fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

我打算最终在批处理文件中使用并在我的项目目录中运行的命令行系统是:

pushd Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
call vcvars32.bat
popd
md build64
cd build64
G:\Qt\5.5\msvc2013_64\bin\qmake.exe -spec win32-msvc2013 -o Makefile ..\Maps.pro
G:\Qt\Tools\QtCreator\bin\jom.exe -f Makefile.Release

我在命令窗口中使用此命令(使用vcvars32设置路径后,可以找到诸如nmake,rc和link之类的Visual Studio工具)并得到错误。 请注意,命令行方法非常适合我的32位版本。

我使用的qmake命令行是从IDE创建的Makefile的注释中记录的命令行复制而来的,该命令行声称这是用于创建该makefile的命令。 我知道“ -spec win32-msvc2013”​​选项看起来很奇怪,但是当IDE使用它时它可以工作。

我使用的jom命令行是IDE使用的命令行,由“编译输出”窗口记录。

我唯一想到的就是Qt设置了一些我不知道的“魔术”环境变量。

[是的,我已经在Google上进行了广泛的搜索,并在此处查看了其他问题和答案,但找不到适合这种情况的任何内容。]

这段代码

pushd Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
vcvars32.bat
popd

设置用于构建32位体系结构的环境。 从不同的目录运行vcvars32.bat (我认为它的名称应为amd64 ,目前没有Windows计算机,因此无法说出确切的目录名称,但您会发现)。

还是做

pushd "<DRIVE>:\Program Files (x86)\Microsoft Visual Studio <Version>\Common7\Tools"
vsvars32 x64
popd

VS2017更新:

对于64位体系结构,请使用以下命令:

"<DRIVE>:\Program Files (x86)\Microsoft Visual Studio\2017\<Version>\VC\Auxiliary\Build\vcvars64.bat"

对于32位:

"<DRIVE>:\Program Files (x86)\Microsoft Visual Studio\2017\<Version>\VC\Auxiliary\Build\vcvars32.bat"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM