我制作了一个小型 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 行并在“<<”之前添加一个制表符,它在其他行号处抱怨。所以我觉得编译器选项有问题,有人可以指导如何使其工作。

多谢

有帮助吗?

解决方案

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

  • 您使用 QMainWindow 作为应用程序,因为它看起来与 QApplication 相反。那是不会编译的。

  • 相应地,您需要包含 QApplication 而不是 QMainWindow。

  • 在主函数中的第一个语句后面缺少一个分号。

  • 你构造一个 QLabel 不必要地在堆上。在这个特定场景中,它可能是一个简单的堆栈对象。

  • 您使用调用 qmake 作为 qmake -foo 而不仅仅是 qmake 或者 make foo.

  • 您正在尝试在 Windows 命令提示符中使用“make”,而不是 nmake 或者 jom. 。如果你使用Visual Studio和MSVC,不要和mingw、cygwin等东西混在一起。只需使用 nmake,否则,是的,使用 make 来执行后面的选项。

主程序

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

主程序

TEMPLATE = app
TARGET = main
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
SOURCES += main.cpp

构建并运行

* qmake
* nmake
* main.exe
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top