Я знаю, что есть несколько вопросов, задаваемых онлайн по подобным вопросам, но, к сожалению, никто из них не помог мне решить эту относительно простую ситуацию, как следует из названия.qmake не вызывает uic
Я создал минимальный 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 является стандартной формой MainWindow, предоставляемой Qt Creator.
Теперь, если я бегу
qmake qt.pro
затем Makefile создается вызывает эту ошибку, когда делают запускается на выполнение:
[[email protected] 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 была нарушена - я запускаю Arch Linux и получил Qt SDK из репозитория по умолчанию.
Большое спасибо за помощь в совете!
Попробуйте включить 'mainwindow.ui' вместо' ui_mainwindow.ui' – wasthishelpful
Спасибо за быстрый ответ! К сожалению, это не сработало, и результаты остались прежними. Файлы не генерировались, а g ++ - ошибка «нет такого файла или каталога». –
@wasthishelpful, это * 'ui_mainwindow.h' *. Нелогично включать файл 'mainwindow.ui' xml в файл cpp' main.cpp' – Mike