Вопрос

Я создал небольшое приложение 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top