Frage

Ich habe eine kleine QT-Anwendung erstellt und versuche, sie über die Eingabeaufforderung unter Windows auszuführen:

#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();
}

nach dem Tun qmake -project und dann qmake -TestPrg.pro dann versuche ich es make, hier schlägt es mit folgendem Fehler fehl:

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

Wenn wir uns anschauen makefile.debug ,zeilennummer 58 und fügen Sie einen Tabulator vor "<<", beschwert es sich an einer anderen Stelle number.So ich habe das Gefühl, dass in den Compiler-Optionen etwas nicht stimmt.Kann jemand anleiten, wie es funktioniert.

Vielen Dank

War es hilfreich?

Lösung

Ich habe gerade ein Beispiel an meiner Maschine arbeiten lassen.Der Code geht weiter unten, aber Sie haben zumindest ein paar Fehler, nämlich:

  • Sie verwenden QMainWindow als Anwendung, wie es im Gegensatz zu QApplication scheint.Das wird nicht kompiliert.

  • Dementsprechend müssten Sie QApplication anstelle von QMainWindow einschließen.

  • Sie vermissen ein Semikolon nach der ersten Anweisung in der Hauptfunktion.

  • Sie konstruieren eine QLabel unnötig auf dem Haufen.In diesem speziellen Szenario könnte es sich um ein einfaches Stapelobjekt handeln.

  • Sie verwenden den Aufruf von qmake als qmake -foo anstatt nur qmake oder make foo.

  • Sie versuchen, "make" in der Windows-Eingabeaufforderung zu verwenden, im Gegensatz zu nmake oder jom.Wenn Sie Visual Studio und MSVC verwenden, mischen Sie es nicht mit mingw, Cygwin und anderen Dingen.Verwenden Sie einfach nmake, andernfalls verwenden Sie make für die letzteren Optionen.

wichtigsten.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

Erstellen und ausführen

* qmake
* nmake
* main.exe
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top