qmake 不调用 uic
qmake doesn't invoke uic
我知道网上有几个关于类似问题的问题,但不幸的是 none 帮助我解决了这个相对 simple-looking 的问题,如标题所示。
我建立了一个出现问题的最小 Qt 项目:
├── main.cpp
├── mainwindow.ui
└── qt.pro
main.cpp:
#include <QtWidgets/QtWidgets>
#include "ui_mainwindow.h"
int main () {
return 0;
}
qt.pro:
TEMPLATE = app
TARGET = qt-qmake-uic-problem
INCLUDEPATH += .
# Input
FORMS += mainwindow.ui
SOURCES += main.cpp
文件mainwindow.ui是Qt Creator默认提供的MainWindow Form。
现在如果我运行
qmake qt.pro
然后创建一个 Makefile,在执行 make 时导致此错误:
[developer@kdb qt-qmake-uic-problem]$ make
g++ -c -pipe -O2 -march=i686 -mtune=generic -O2 -pipe -fstack-protector-strong -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I. -I. -isystem /usr/include/qt -isystem /usr/include/qt/QtGui -isystem /usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g++ -o main.o main.cpp
main.cpp:2:28: fatal error: ui_mainwindow.ui: No such file or directory
#include "ui_mainwindow.h"
^
compilation terminated.
make: *** [Makefile:298: main.o] Error 1
据我所知,ui_mainwindow.h 必须由 qmake 或 Makefile 生成 - 而不是由我自己手动调用 uic。我必须注意到 moc 也发生了类似的事情,并且在我的研究中我没有在文档或类似问题中找到解释,尽管如果 qmake 安装被破坏会很奇怪 - 我是 运行ning Arch Linux 并从默认存储库中获取 Qt SDK。
非常感谢您的指教!
假设您使用的是 QT-5:
如果您想使用 UI 元素链接 QMainWindow 或其他 QT 小部件,您需要在您的项目配置中启用小部件:
QT += widgets
然后这会激活对 FORMS 内容的处理,例如您的示例中的 mainwindow.ui,并导致您的代码与正确的库链接。
我知道网上有几个关于类似问题的问题,但不幸的是 none 帮助我解决了这个相对 simple-looking 的问题,如标题所示。
我建立了一个出现问题的最小 Qt 项目:
├── main.cpp
├── mainwindow.ui
└── qt.pro
main.cpp:
#include <QtWidgets/QtWidgets>
#include "ui_mainwindow.h"
int main () {
return 0;
}
qt.pro:
TEMPLATE = app
TARGET = qt-qmake-uic-problem
INCLUDEPATH += .
# Input
FORMS += mainwindow.ui
SOURCES += main.cpp
文件mainwindow.ui是Qt Creator默认提供的MainWindow Form。
现在如果我运行
qmake qt.pro
然后创建一个 Makefile,在执行 make 时导致此错误:
[developer@kdb qt-qmake-uic-problem]$ make
g++ -c -pipe -O2 -march=i686 -mtune=generic -O2 -pipe -fstack-protector-strong -Wall -W -D_REENTRANT -fPIC -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I. -I. -isystem /usr/include/qt -isystem /usr/include/qt/QtGui -isystem /usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g++ -o main.o main.cpp
main.cpp:2:28: fatal error: ui_mainwindow.ui: No such file or directory
#include "ui_mainwindow.h"
^
compilation terminated.
make: *** [Makefile:298: main.o] Error 1
据我所知,ui_mainwindow.h 必须由 qmake 或 Makefile 生成 - 而不是由我自己手动调用 uic。我必须注意到 moc 也发生了类似的事情,并且在我的研究中我没有在文档或类似问题中找到解释,尽管如果 qmake 安装被破坏会很奇怪 - 我是 运行ning Arch Linux 并从默认存储库中获取 Qt SDK。
非常感谢您的指教!
假设您使用的是 QT-5:
如果您想使用 UI 元素链接 QMainWindow 或其他 QT 小部件,您需要在您的项目配置中启用小部件:
QT += widgets
然后这会激活对 FORMS 内容的处理,例如您的示例中的 mainwindow.ui,并导致您的代码与正确的库链接。