我已经通过Qt Online安装程序安装了带有MinGW 4.8和QtCreator的Qt 5.1.1。我启动了Qt creator,并使用基于QMainWindow(默认)的MainWindow类制作了新项目(Qt应用程序桌面)。它工作正常,编译后弹出一个主窗口。
但是,当我使用 C:\Qt\Qt5.1.1\Tools\QtCreator\bin\jom.exe 而不是 C:\Qt\Qt5.1.1\Tools\mingw48_32\bin\mingw32-make.exe 时,我得到了如下所示的一些输出。
jom 1.0.13 - empower your cores
C:QtQt5.1.1ToolsQtCreatorbinjom.exe -f Makefile.Release
g++ -c -pipe -fno-keep-inline-dllexport -O2 -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I../foobar -I'C:/Qt/Qt5.1.1/5.1.1/mingw48_32/include' -I'C:/Qt/Qt5.1.1/5.1.1/mingw48_32/include/QtWidgets' -I'C:/Qt/Qt5.1.1/5.1.1/mingw48_32/include/QtGui' -I'C:/Qt/Qt5.1.1/5.1.1/mingw48_32/include/QtCore' -I'release' -I'.' -I'.' -I'C:/Qt/Qt5.1.1/5.1.1/mingw48_32/mkspecs/win32-g++' -o release/main.o ../foobar/main.cpp
In file included from ../foobar/main.cpp:1:0:
../foobar/mainwindow.h:4:23: fatal error: QMainWindow: No such file or directory
#include <QMainWindow>
^
compilation terminated.
jom: D:workbuild-foobar-Desktop_Qt_5_1_1_MinGW_32bit-ReleaseMakefile.Release [releasemain.o] Error 1
jom: D:workbuild-foobar-Desktop_Qt_5_1_1_MinGW_32bit-ReleaseMakefile [release] Error 2
15:17:38: Process "C:QtQt5.1.1ToolsQtCreatorbinjom.exe" stopped with code 2
Error while building/deploying project foobar (kit: Desktop Qt 5.1.1 MinGW 32bit)
During step 'Make'
15:17:38: Elapsed time: 00:00.
我的 .pro 是这样的。
#-------------------------------------------------
#
# Project created by QtCreator 2013-09-08T15:16:13
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = foobar
TEMPLATE = app
SOURCES += main.cpp mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
我认为编译期间 .pro greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
和输出中的行看起来不错,-I'C:/Qt/Qt5.1.1/5.1.1/mingw48_32/include/QtWidgets'
失败了。
如何在Windows 7(32位)上使用Qt 5.1和jom进行编译?
提前谢谢。
Jom 是 nmake
的替代品,而不是 MinGW 的make
。
nmake
是用于编译生成文件的Visual Studio命令行工具。不幸的是,该工具只使用一个内核(并行构建直接在Visual Studio中处理或使用MSBuild处理,我不太确定)。话虽如此,Jörg Bornemann 编写了一个名为 jom 的工具,该工具将-j
命令添加到 nmake 中。它将允许您使用Visual C++编译器跨不同线程编译代码。
另一端的MinGW包含(除其他外)GNU GCC编译器的端口。作为一个港口,并非所有与海湾合作委员会有关的事情都可以与MinGW合作,我想-jN
就是其中之一。但是,MinGW确实支持将生成尽可能多的进程的选项-j
(请注意,如果您使用此选项,则可能无法在编译时使用计算机)。
在您的情况下,您可能希望使用MinGW,因为您的Qt版本是用它编译的。如果你想使用Visual Studio,你必须安装它,但还需要:
- 重新编译Qt(和所有其他库依赖项)或
- 下载与刚刚安装的 Visual Studio 版本对应的二进制文件。
使用jom
应该在完成此操作后与QtCreator一起使用。
就我而言,我通过在项目设置中仅向 qt、mingw 和 qtcreator 添加 bin 路径来覆盖系统环境 PATH 来修复此错误:"E:\Qt\4.8.1\bin;E:\qt\mingw-4.4.0\bin;E:\Qt\qtcreator-4.0.0\bin",并在运行 qmake 和重建之后