2

我已经通过 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:\Qt\Qt5.1.1\Tools\QtCreator\bin\jom.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:\work\build-foobar-Desktop_Qt_5_1_1_MinGW_32bit-Release\Makefile.Release [release\main.o] Error 1
jom: D:\work\build-foobar-Desktop_Qt_5_1_1_MinGW_32bit-Release\Makefile [release] Error 2
15:17:38: Process "C:\Qt\Qt5.1.1\Tools\QtCreator\bin\jom.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

我认为 .progreaterThan(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 进行编译?

提前致谢。

4

2 回答 2

1

Jom 是替代nmake而不是 MinGW 的make.

nmake是用于编译 makefile的Visual Studio命令行工具。不幸的是,该工具仅使用一个内核(并行构建在 Visual Studio 中直接或使用 MSBuild 处理,我不太确定)。话虽如此,Jörg Bornemann编写了一个名为 jom 的工具,该工具将-j命令添加到 nmake。它将允许您使用 Visual C++ 编译器跨不同线程编译代码。

另一端的 MinGW 包含(除其他外)Windows的GNU GCC 编译器的一个端口。作为一个端口,并不是所有可以用 GCC 做的事情都可以用 MinGW 做,我想这-jN就是其中之一。但是,MinGW 确实支持-j生成尽可能多的进程的选项(请注意,如果您使用此选项,您可能无法在编译时使用您的计算机)。

在您的情况下,您可能希望使用 MinGW,因为您的 Qt 版本是用它编译的。如果要使用 Visual Studio,则必须安装它,但也可以:

  • 重新编译 Qt(和所有其他库依赖项)或
  • 下载与您刚刚安装的 Visual Studio 版本对应的二进制文件。

完成后,使用jom应该只适用于 QtCreator。

于 2013-09-10T11:20:17.643 回答
0

在我的情况下,我通过在项目设置中覆盖系统环境 PATH 来修复此错误,方法是仅将 bin 路径添加到 qt、mingw 和 qtcreator:“E:\Qt\4.8.1\bin;E:\qt\mingw-4.4.0\ bin;E:\Qt\qtcreator-4.0.0\bin" 并在运行 qmake 和重建之后

于 2016-05-26T11:29:17.970 回答