【发布时间】:2015-11-23 17:38:03
【问题描述】:
我有一个正在尝试自动化的 Qt 项目。在 Windows 上,我为 32 位和 64 位平台构建。我正在使用 Visual Studio 2013。我安装了以下 Qt 工具包:Desktop Qt 5.5.1 MSVC2013 32bit 和 Desktop Qt 5.5.1 MSVC2013 64bit。所有四个版本(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 和链接等 Visual Studio 工具之后)并得到错误。请注意,命令行方法非常适合我的 32 位版本。
我使用的 qmake 命令行是从 IDE 创建的 Makefile 中的注释中记录的命令行复制而来,该命令行声称它是用于创建该 makefile 的命令。我知道“-spec win32-msvc2013”选项看起来很奇怪,但是当 IDE 使用它时它可以工作。
我使用的 jom 命令行是 IDE 使用的命令行,正如“编译输出”窗口所记录的那样。
我唯一能想到的是 Qt 设置了一些我不知道的“神奇”环境变量。
[是的,我在 Google 上进行了非常广泛的搜索,并在此处查看了其他问题和答案,但找不到任何适合此案例的内容。]
【问题讨论】: