[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:51720] Qtのテスティングフレームワークqtestlibについて



長部と申します。

# Debianのメーリングリストでは適当でない内容かもしれないので、
# もし、適当なメーリングリストが分かれば、教えていただきたいのですが。。。

GUIライブラリQtにテスティングフレームワーク qtestlibが
あります。チュートリアルに載っているテストをコンパイル
すると、リンク時に定義されていない参照と出て、コンパイル
できません。

チュートリアルは
http://qt.linux-life.net/4/doc/ja/qtestlib-manual.html#creating-a-testhttp://qt.linux-life.net/4/doc/ja/qtestlib-tutorial1.html
で、テストのソースファイル teststring.cpp は、

#include <QtTest/QtTest>
class TestQString: public QObject
{
    Q_OBJECT
private slots:
    void toUpper();
};

void TestQString::toUpper()
{
    QString str = "Hello";
    QVERIFY(str.toUpper() == "HELLO");
}

QTEST_MAIN(TestQString)
#include "testqstring.moc"

です。2番目の英文のチュートリアルの通り、ソースファイルを置いたディレクトリ内で、

$ qmake -project "QT += testlib"

でプロジェクトファイルを作成し、

$ qmake

でMakefileを作成、makeでコンパイルを行うと、
(省略)
g++  -o tutorial testqstring.o    -L/usr/lib -lQtGui -lQtCore -lpthread
testqstring.o: In function `TestQString::toUpper()':
testqstring.cpp:(.text+0x126): undefined reference to `QTest::qVerify(bool, char const*, char const*, char const*, int)'
testqstring.o: In function `main':
testqstring.cpp:(.text+0x2b3): undefined reference to `QTest::qExec(QObject*, int, char**)'
collect2: ld returned 1 exit status
make: *** [tutorial] エラー 1

とリンク時にエラーが出ます。テスティングフレームワークのライブラリ
libQtTest.soは、/usr/lib/libQtTest.soにあり、

$ g++  -o tutorial testqstring.o    -L/usr/lib -lQtGui -lQtCore -lpthread -lQtTest

を実行すると、リンクが通ります。あるいは、Makefileで、LIBSに-lQtTestを
追加して、makeを実行すると、コンパイルできます。

で、気になっているのは、qmake -project "QT += testlib" && qmake
の実行でMakefileに、libQtTest.soとリンクさせるという指示が入るはずなのが、
入っていないことです。これって、qmakeコマンドのバグなんでしょうか。