L'exécution d'une application QT à partir de promt de Commande dans WIndows
-
21-12-2019 - |
Question
J'ai fait une petite application QT et je suis en train de l'exécuter thru invite de commande sous 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();
}
après avoir fait qmake -project
et puis qmake -TestPrg.pro
puis-je l'essayer make
ici il échoue avec l'erreur suivante:
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
Si l'on regarde makefile.debug
,numéro de la ligne 58 et ajouter un ONGLET avant "<<"il se plaint à someother numéro de ligne.Donc, je sens qu'il ya quelque chose de mal dans les options du compilateur ,quelqu'un peut-il savoir comment le faire fonctionner.
Merci beaucoup
La solution
J'ai juste fait un exemple de travail sur ma machine.Le code ci-dessous va, mais vous avez au moins quelques erreurs, à savoir:
Vous utilisez QMainWindow pour être l'application qu'il semble, par opposition à QApplication.Qui ne va pas à compiler.
Respectivement, vous devez inclure la QApplication plutôt que de QMainWindow.
Vous oubliez un point-virgule après la première instruction de la fonction principale.
Vous construisez un
QLabel
sur le segment de mémoire inutilement.Dans ce scénario particulier, il pourrait être une simple pile de objet.Vous utilisez invoquant que qmake
qmake -foo
plutôt que de simplementqmake
oumake foo
.Vous essayez d'utiliser "faire" dans l'invite de Commande Windows, par opposition à
nmake
oujom
.Si vous utilisez Visual Studio et MSVC, ne les mélangez pas avec mingw, cygwin, et d'autres choses.Utilisez simplement nmake, sinon, oui, utiliser le prendre pour le dernier des options.
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();
}
principal.pro
TEMPLATE = app
TARGET = main
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
SOURCES += main.cpp
Construire et Exécuter
* qmake
* nmake
* main.exe