C++ Qt Windows x64构建在IDE中成功,但未在命令行上成功
我有一个Qt项目,我正在尝试自动化。在Windows上,我为32位和64位平台构建。我正在使用Visual Studio 2013。我安装了以下Qt套件:桌面Qt 5.5.1 MSVC2013 32位和桌面Qt 5.5.1 MSVC2013 64位。所有四个版本(32位调试和发布,以及64位调试和发布)都可以在IDE中构建和运行,没有任何问题。不幸的是,从命令行生成失败,出现以下错误:C++ Qt Windows x64构建在IDE中成功,但未在命令行上成功,c++,qt,makefile,C++,Qt,Makefile,我有一个Qt项目,我正在尝试自动化。在Windows上,我为32位和64位平台构建。我正在使用Visual Studio 2013。我安装了以下Qt套件:桌面Qt 5.5.1 MSVC2013 32位和桌面Qt 5.5.1 MSVC2013 64位。所有四个版本(32位调试和发布,以及64位调试和发布)都可以在IDE中构建和运行,没有任何问题。不幸的是,从命令行生成失败,出现以下错误: fatal error LNK1112: module machine type 'X86' conflict
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之类的VisualStudio工具之后)并获得错误。请注意,命令行方法非常适合我的32位构建
我使用的qmake命令行是从IDE创建的Makefile中的注释中记录的命令行复制而来的,IDE声称这是用于创建该Makefile的命令。我知道“-spec win32-msvc2013”选项看起来很奇怪,但当IDE使用它时,它会工作
我使用的jom命令行是IDE使用的命令行,由编译输出窗口记录
我唯一能想到的是Qt设置了一些我不知道的“神奇”环境变量
[是的,我在谷歌上搜索了很多内容,并在这里查看了其他问题和答案,但没有找到任何适合这种情况的答案。]这段代码
pushd Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin
vcvars32.bat
popd
设置用于构建32位体系结构的环境。从不同的目录运行vcvvars32.bat
(我认为它的名称中应该有amd64
,目前没有Windows计算机,因此无法说出确切的目录名,但你会知道的)
或者
pushd:\程序文件(x86)\Microsoft Visual Studio\Common7\Tools”
vsvars32 x64
邻苯二胺
VS2017的更新:
对于64位体系结构,请使用以下命令:
"<DRIVE>:\Program Files (x86)\Microsoft Visual Studio\2017\<Version>\VC\Auxiliary\Build\vcvars64.bat"
“:\ProgramFiles(x86)\Microsoft Visual Studio\2017\\VC\Auxiliary\Build\vcvars64.bat”
对于32位:
"<DRIVE>:\Program Files (x86)\Microsoft Visual Studio\2017\<Version>\VC\Auxiliary\Build\vcvars32.bat"
“:\ProgramFiles(x86)\Microsoft Visual Studio\2017\\VC\Auxiliary\Build\vcvars32.bat”
感谢您提供了正确且非常快速的答案!我使用了命令“c:\ProgramFiles(x86)\MicrosoftVisualStudio12.0\vc\bin\amd64\vcvars64.bat”,而不是我以前使用的命令,构建现在可以工作了。
"<DRIVE>:\Program Files (x86)\Microsoft Visual Studio\2017\<Version>\VC\Auxiliary\Build\vcvars32.bat"