2013-08-24 30 views
2

我是新手,所以请耐心等待我。 我使用的是Ubuntu,我从.run文件安装了Qt 5.1.0。 QtCreator 2.8也已安装。 我添加这些行到我的.bashrc文件:通过终端创建项目文件并编译失败,但通过Qt Creator IDE工作正常

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 

我试图comile简单的示例应用程序:

#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变量,并且这个阶段没有问题(还有其他问题,但这是另一个问题)。 这在Makefile INCPATH变量通过QtCreator创建:

“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“ 何时从终端启动manualy? 加入这行来.pro文件解决了这个问题暂时:

QT += widgets 

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

谢谢。

+0

更新“QT + = gui”并重建。 – Ashif

+0

对不起,但我不明白“更新”是什么意思? – Marko

+0

替换为“QT + = gui”而不是“QT + = widgets”并重新编译,它有助于为模块创建适当的包含MAKEFILE。 QApplication是“gui”的一部分QCoreApplication是“core”的一部分,对于gramatical mistaks,对不起:) – Ashif

回答

2

这是Qt中的错误,当使用命令qmake -project从终端创建项目文件时,生成的项目文件不包含line:greaterThan(QT_MAJOR_VERSION,4):QT + = widgets。这可能是qmake在MAKEFILE中不包含“-I/opt/Qt5.1.0/5.1.0/gcc/include/QtWidgets”的原因。更多信息QT BUG

相关问题