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

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



長部です。
返信ありがとうございます。

On Fri, 23 Jan 2009 23:52:47 +0900
Yuya Nishihara <yuya@xxxxxxxx> wrote:

> 西原です。

> qmake -project "QT += testlib" でプロジェクトファイルに QT += testlib
> が追加されるところまではOKですか?

OKです。

> > です。qmakeのバージョンは同じで、Qtライブラリのバージョンがわたしのは低いですね。
> > 西原さんのQtライブラリのバージョンが高いということは、lennyをお使いなのでしょう?
> 
> sid + experimental (KDE4.1関係) です。

VMware Server仮想マシンにlennyをインストールして、テストしたところ、qmakeの実行で、
MakefileのLIBSに -lQtTestがちゃんと追加されました。lennyでは問題ないようです。

> 
> $ dpkg -l libqt4-dev
> ...
> ii  libqt4-dev                   4.4.3-2                      Qt 4 development files
> 
> 次のファイルに QT += testlib だったら QtTest を追加しそうな記述がありました。 
> /usr/share/qt4/mkspecs/features/qt.prf 
> --
> else:isEqual(QTLIB, testlib):qlib = QtTest
> --
> 長部さんのところではどうでしょうか?

etchでは、/usr/share/qt4/mkspecs/features/qt.prfには、この記述がないですね。
記述を追加して、qmakeを実行しましたが、MakefileのLIBSに -lQtTestは追加されません。
念のため、システムを再起動しても行いましたが、ダメでした。

次に、lennyのQtバージョン 4.2.1に対応するソースアーカイブ qt-x11-opensource-src-4.2.1.tar.gz
をダウンロードして、mkspecs/featuresディレクトリで

$ grep testlib *

を実行したところ、

qt.prf:TMPLIBS = webkit phonon dbus testlib script svg qt3support sql xmlpatterns xml opengl gui network core
qt.prf:   else:isEqual(QTLIB, testlib):qlib = QtTest
qt.prf:         isEqual(QTLIB, testlib):CONFIG += console

となりました。そこで、etchで、/usr/share/qt4/mkspecs/features/qt.prfファイルで、
上記の内容を反映させたところ、qmakeで、MakefileのLIBSに -lQtTestが追加され、
問題が解決されました。etchではqteslibの実装が不完全なようですね。

以下に、/usr/share/qt4/mkspecs/features/qt.prfへのパッチを載せます。

*** qt.prf.org  2009-01-24 10:47:34.000000000 +0900
--- qt.prf  2009-01-24 11:04:02.000000000 +0900
***************
*** 22,28 ****
  win32:INCLUDEPATH += $$QMAKE_INCDIR_QT/ActiveQt

  # As order does matter for static libs, we reorder the QT variable here
! TMPLIBS = svg qt3support sql xml opengl gui network core
  for(QTLIB, $$list($$TMPLIBS)) {
     contains(QT, $$QTLIB): QT_ORDERED += $$QTLIB
  }
--- 22,28 ----
  win32:INCLUDEPATH += $$QMAKE_INCDIR_QT/ActiveQt

  # As order does matter for static libs, we reorder the QT variable here
! TMPLIBS = testlib svg qt3support sql xml opengl gui network core
  for(QTLIB, $$list($$TMPLIBS)) {
     contains(QT, $$QTLIB): QT_ORDERED += $$QTLIB
  }
***************
*** 53,58 ****
--- 53,59 ----
     else:isEqual(QTLIB, canvas):qlib = QtCanvas
     else:isEqual(QTLIB, qt3support):qlib = Qt3Support
     else:isEqual(QTLIB, svg):qlib = QtSvg
+    else:isEqual(QTLIB, testlib):qlib = QtTest
     else:message("Unknown QT: $$QTLIB"):qlib =
     !isEmpty(qlib) {
        target_qt:isEqual(TARGET, qlib) {
***************
*** 65,70 ****
--- 66,72 ----
           }
     isEqual(QTLIB, opengl):CONFIG += opengl
     isEqual(QTLIB, qt3support):DEFINES *= QT3_SUPPORT
+          isEqual(QTLIB, testlib):CONFIG += console

       qtAddLibrary($$qlib)
        }