2

私は初心者なので、しばらくお待ちください。私は 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: そのようなファイルまたはディレクトリのコンパイルは終了しませんでした。」</p>

問題は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

しかし、毎回これを手動で行いたくありません。どうすれば修正できますか?

ありがとうございました。

4

1 に答える 1

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 バグ

于 2013-08-24T16:09:27.297 に答える