Ausführen einer QT-Anwendung über die Befehlsaufforderung in WIndows
-
21-12-2019 - |
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
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 nurqmake
odermake foo
.Sie versuchen, "make" in der Windows-Eingabeaufforderung zu verwenden, im Gegensatz zu
nmake
oderjom
.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