在WIndows中从命令提示符运行QT应用程序

时间:2014-01-10 10:20:28

标签: c++ qt makefile qtgui qmainwindow

我已经制作了一个小型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并在“&lt;&lt;”之前添加一个TAB,它会在另一个行号上抱怨。所以我觉得编译器选项有问题,有人可以指导如何让它发挥作用。

非常感谢

1 个答案:

答案 0 :(得分:2)

我刚刚在我的机器上做了一个例子。代码如下,但你至少有一些错误,即:

  • 您使用QMainWindow作为应用程序,因为它似乎与QApplication相反。那不会编译。

  • 分别需要包含QApplication而不是QMainWindow。

  • 在主函数中的第一个语句后,您会错过分号。

  • 你不必要地在堆上构造QLabel。在这种特殊情况下,它可能是一个简单的堆栈对象。

  • 您使用qmake作为qmake -foo,而不只是qmakemake foo

  • 您尝试在Windows命令提示符中使用“make”,而不是nmakejom。如果您使用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