[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-test
や
http://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コマンドのバグなんでしょうか。