【发布时间】:2013-08-24 15:02:42
【问题描述】:
我是新手,请耐心等待。 我正在使用 Ubuntu,并且我已经从 .run 文件安装了 Qt 5.1.0。 QtCreator 2.8 也安装了。 我将这些行添加到我的 .bashrc 文件中:
export QTDIR=/opt/Qt5.1.0/5.1.0/gcc
export QMAKESPEC=$QTDIR/mkspecs/linux-g++
export QT_PLUGIN_PATH=$QTDIR/plugins
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
我尝试编译简单的示例应用程序:
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc,argv);
QLabel *label = new QLabel("Hello Qt!");
label->show();
return app.exec();
}
我做了“qmake -project”和“qmake hello.pro”,然后我输入了“make”。 这给了我错误:“hello.cpp:1:24: fatal error: QApplication: No such file or directory 编译终止。”
问题似乎出在 qmake 中。当我用 QtCreator 制作项目时,它的 Makefile 有不同的 INCPATH 变量,这个阶段没有问题(还有其他问题,但这是另一个问题)。 这是通过 QtCreator 创建的 Makefile 中的 INCPATH 变量:
“INCPATH = -I/opt/Qt5.1.0/5.1.0/gcc/mkspecs/linux-g++ -I../helloQtCreator -I/opt/Qt5.1.0/5.1.0/gcc/include -I/opt/Qt5.1.0/5.1.0/gcc/include/QtWidgets -I/opt/Qt5.1.0/5.1.0/gcc/include/QtGui -I/opt/Qt5.1.0/5.1.0/gcc/include/QtCore -I. -I. -I.”
而这个是qmake通过终端创建的:
“INCPATH = -I/opt/Qt5.1.0/5.1.0/gcc/mkspecs/linux-g++ -I. -I. -I/opt/Qt5.1.0/5.1.0/gcc/include -I/opt/Qt5.1.0/5.1.0/gcc/include/QtGui -I/opt/Qt5.1.0/5.1.0/gcc/include/QtCore -I.”
项目名称不同但为什么 qmake 不包含 “-I/opt/Qt5.1.0/5.1.0/gcc/include/QtWidgets” 何时从终端手动启动? 将此行添加到 .pro 文件可以暂时解决问题:
QT += widgets
但我不想每次都手动执行此操作。 我该如何解决?
谢谢。
【问题讨论】:
-
更新“QT += gui”并重建。
-
对不起,我不明白你所说的“更新”是什么意思?
-
替换为“QT += gui”而不是“QT += widgets”并重建,它有助于为模块创建具有适当包含的 MAKEFILE。 QApplication 是“gui”的一部分 QCoreApplication 是“core”的一部分。抱歉语法错误:)
-
我的问题是我不想每次都手动编辑 .pro 文件。 QT += widgets 也可以,但默认情况下没有那行。感谢您的帮助。