Запуск приложения QT из командной строки в Windows
-
21-12-2019 - |
Вопрос
Я создал небольшое приложение QT и пытаюсь запустить его через командную строку в Windows:
#include <QMainWindow>
#include <QLabel>
int main(int argc,char* argv[])
{
QMainWindow a(argc,argv)
QLabel *NewLabel = new QLabel("Hi i am a label");
NewLabel->show();
return a.exec();
}
после выполнения qmake -project
а потом qmake -TestPrg.pro
тогда я попробую make
, здесь происходит сбой со следующей ошибкой:
D:\TestPrg>make
make -f Makefile.Debug
make[1]: Entering directory `D:/TestPrg'
Makefile.Debug:58: *** missing separator. Stop.
make[1]: Leaving directory `D:/TestPrg'
make: *** [debug] Error 2
Если мы посмотрим на makefile.debug
, номер строки 58 и добавьте TAB перед «<<», он жалуется на другой номер строки. Итак, я чувствую, что что-то не так в параметрах компилятора, может кто-нибудь подсказать, как заставить его работать.
Большое спасибо
Решение
Я только что выполнил пример работы на своей машине.Код приведен ниже, но у вас есть как минимум несколько ошибок, а именно:
Вы используете QMainWindow как приложение, а не QApplication.Это не скомпилируется.
Соответственно, вам нужно будет включить QApplication, а не QMainWindow.
Вы пропустили точку с запятой после первого оператора в основной функции.
Вы строите
QLabel
на куче без необходимости.В данном конкретном сценарии это может быть простой объект стека.Вы используете вызов qmake как
qmake -foo
а не простоqmake
илиmake foo
.Вы пытаетесь использовать «make» в командной строке Windows, а не
nmake
илиjom
.Если вы используете Visual Studio и MSVC, не смешивайте их с mingw, cygwin и другими вещами.Просто используйте nmake, в противном случае — да, используйте make для последних вариантов.
main.cpp
#include <QApplication>
#include <QLabel>
int main(int argc, char **argv)
{
QApplication a(argc, argv);
QLabel NewLabel("Hi i am a label");
NewLabel.show();
return a.exec();
}
main.pro
TEMPLATE = app
TARGET = main
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
SOURCES += main.cpp
Стройте и запускайте
* qmake
* nmake
* main.exe