通过终端创建项目文件并编译failes,但通过Qt Creator IDE可以正常工作

时间:2013-08-24 15:02:42

标签: c++ qt makefile qt5 qmake

我是新手,所以请耐心等待我。 我正在使用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:致命错误: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不包括     “ - 我的/ opt / Qt5.1.0 / 5.1.0 / GCC /包括/ QtWidgets” 什么时候从终端开始manualy? 将此行添加到.pro文件可以解决临时问题:

QT += widgets

但我不想每次都手动执行此操作。 我该如何解决?

谢谢。

1 个答案:

答案 0 :(得分:2)

这是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