通过终端和编译创建项目文件失败,但通过Qt Creator IDE工作正常



我是新手,请耐心等待。我使用的是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"one_answers"qmake-hello.pro",然后我输入了"make"。这给了我一个错误:"hello.cpp:1:24:致命错误:QApplication:没有这样的文件或目录编译已终止。"

问题似乎出在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中的错误,当使用命令qmake-project从终端创建项目文件时,生成的项目文件不包含行:greaterThan(Qt_MAJOR_VERSION,4):Qt+=widgets。这可能是qmake在MAKEFILE中不包含"-I/opt/Qt5.1.0/5.1.0/gcc/include/QtWidgets"的原因。更多信息QT BUG。

最新更新