eclipseは上位階層フォルダにあるファイルをincludeできない? ~Qtをeclipse+CDTで開発~

コマンドプロンプトからqmake -projectqmakemakeをして出来上がったプログラムは動くのに、eclipseでは同じプログラムをビルドしたときになんかエラー…
エラーメッセージで検索してみると、リンカのオプションどーのこーのと書いてあったが変わらず。

#include <QApplication.h>
#include <QPushButton.h>

int main(int argc, char *argv[])
{
QApplication app(argc, argv);

QPushButton hello("Hello world!");
hello.resize(100, 30);

hello.show();
return app.exec();
}

このような、チュートリアルにもあるコードをeclipseビルドしてみました。すると、
undefined reference to `_imp___ZN12QApplicationC1ERiPPci'
などというエラーが…。どれもundefined referenceとあるので要はなんか参照できていないようです。

とりあえず、アタマのQApplication.hをeclipse右側の「アウトライン」でダブルクリックして開いてみると、
#include "../../src/gui/widgets/qpushbutton.h"
と書いてあります。ところが、その../../src/gui/widgets/qpushbutton.hを同じように参照しようとすると、どうにも見つからない。
おかしいなと思って、最初に戻り、もともとのエラーをみてみると…

(workspace)/hello/Debug/../sample.cpp:6: undefined reference to `_imp___ZN12QApplicationC1ERiPPci'

おや?
Debug/フォルダの親フォルダのsample.cppを意味したいんだろうけど、/hello/Debug/../sample.cppになっちゃってるよ。ふつう/hello/sample.cppじゃない?

こうだとすると、さっきの参照できなかった理由もなんとなくわかってくる。
(QT)/include/Qt/QPushButton.h から ../../src/gui/widgets/qpushbutton.hを参照したとき、
(QT)/src/gui/widgets/qpushbutton.h
を参照すべきところ
(QT)/include/Qt/../../src/gui/widgets/qpushbutton.h
とかいうわけのわからない階層を参照しちゃっているのではなかろうかと。(Qt以下に..というフォルダがあって、そのまた下に…)

この推測は、もし/hello/Debug/../sample.cpp/hello/sample.cppを意味しているんだったら無意味です。誰か筆者の暴走を止めてやってください。

Trackback address for this post

Trackback URL (right click and copy shortcut/link location)

Feedback awaiting moderation

この投稿にはモデレーション待ちのフィードバックが 600 件あります....

コメントを残す


あなたのメールアドレスはこのサイト上には公開されません

頂いたURLは表示されます。
(改行が自動で <br /> になります)
(Name, email & website)
(利用者がメッセージ・フォームを用いてあなたにメール送信することを許可します (あなたのメールアドレスは公開されません)。)