когда я пытаюсь скомпилировать мою программу qt с makefile, она не работает - PullRequest
0 голосов
/ 01 февраля 2019

Когда я компилирую свою программу в qt, все работает нормально, но когда я компилирую ее вручную, используя:

qmake myFile.pro

make

Я получил следующие ошибки:

pat@patate:~/Desktop/alerte_red_compile$ make
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -isystem /usr/include/i386-linux-gnu/qt5 -isystem /usr/include/i386-linux-gnu/qt5/QtWidgets -isystem /usr/include/i386-linux-gnu/qt5/QtGui -isystem /usr/include/i386-linux-gnu/qt5/QtNetwork -isystem /usr/include/i386-linux-gnu/qt5/QtCore -I. -I/usr/lib/i386-linux-gnu/qt5/mkspecs/linux-g++ -o smtp.o smtp.cpp
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I. -isystem /usr/include/i386-linux-gnu/qt5 -isystem /usr/include/i386-linux-gnu/qt5/QtWidgets -isystem /usr/include/i386-linux-gnu/qt5/QtGui -isystem /usr/include/i386-linux-gnu/qt5/QtNetwork -isystem /usr/include/i386-linux-gnu/qt5/QtCore -I. -I/usr/lib/i386-linux-gnu/qt5/mkspecs/linux-g++ -o service.o service.cpp
service.cpp: In constructor ‘MainWindow::MainWindow()’:
service.cpp:9:5: error: ‘QMdiArea’ was not declared in this scope
     QMdiArea *zoneCentrale = new QMdiArea; //multi fenetre
     ^~~~~~~~
service.cpp:9:15: error: ‘zoneCentrale’ was not declared in this scope
     QMdiArea *zoneCentrale = new QMdiArea; //multi fenetre
               ^~~~~~~~~~~~
service.cpp:9:34: error: ‘QMdiArea’ does not name a type
     QMdiArea *zoneCentrale = new QMdiArea; //multi fenetre
                                  ^~~~~~~~
service.cpp:16:5: error: ‘QGridLayout’ was not declared in this scope
     QGridLayout *boutonsLayout = new QGridLayout;
     ^~~~~~~~~~~
service.cpp:16:18: error: ‘boutonsLayout’ was not declared in this scope
     QGridLayout *boutonsLayout = new QGridLayout;
                  ^~~~~~~~~~~~~
service.cpp:16:38: error: ‘QGridLayout’ does not name a type
     QGridLayout *boutonsLayout = new QGridLayout;
                                      ^~~~~~~~~~~
service.cpp: In member function ‘void MainWindow::downloadFile()’:
service.cpp:140:24: error: ‘QFileDialog’ has not been declared
     QString fileName = QFileDialog::getOpenFileName(this,
                        ^~~~~~~~~~~
Makefile:352: recipe for target 'service.o' failed
make: *** [service.o] Error 1

помогите пожалуйста;)

1 Ответ

0 голосов
/ 11 июля 2019

В этом случае вы должны сначала проверить документацию, здесь https://doc.qt.io/qt-5/qmdiarea.html вверху есть поле со строкой с надписью «Заголовок:».

Header: #include <QMdiArea>

Это говорит вам, какиеВключения необходимы, чтобы заставить его работать.

Другая строка "qmake:"

qmake:  QT += widgets

говорит вам, что вы должны поместить в ваш файл .pro.Обе записи необходимы, чтобы заставить его работать (если они уже не включены каким-либо другим способом).

Вторая сообщает сборочной системе, какие файлы необходимы для компиляции, поэтому она генерирует вызовы компилятора внутри make-файла с помощью командыправильные флаги.Первый сообщает препроцессору в процессе компиляции, какие части кода qt необходимы.

Помните, что если вы изменили файл .pro, qmake нужно будет запустить снова, чтобы пересобрать Makefile.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...