qt4-qtruby
KDEのSubversionリポジトリからソースコードを入手:
> mkdir kdebindings
> cd kdebindings
> svn co svn://anonsvn.kde.org/home/kde/trunk/KDE/kdebindings .
...
Checked out revision 1055931.Ruby以外用のソースコード(Python,C#など)も大量にダウンロードされる。今回利用するのは
- smoke/qt
- ruby/qtruby
まず CMakeLists.txt を qtruby 用に書き換える。
kdebindings/CMakeLists.txt を kdebindings/CMakeLists.txt.qtruby で上書き。その内容を以下のように編集する。
- "add_subdirectory(smoke)" と書いてある行の上に "add_subdirectory(generator)" と追記する:
...
FIND_PACKAGE (OpenGL REQUIRED)
add_subdirectory(generator)
add_subdirectory(smoke)
if(RUBY_EXECUTABLE)
..."Visual Studio 2008 コマンド プロンプト" を起動し、
kdebindings> PATH=d:\Qt\2009.04\qt\bin;d:\tmp\cmake-2.8.0-win32-x86\bin;d:\ruby19\bin;d:\Perl\bin;%PATH%
kdebindings> cmake -G "Visual Studio 9 2008" -DCMAKE_INSTALL_PREFIX=d:\ruby19 -DRUBY_EXECUTABLE=d:\ruby19\bin\ruby -DRUBY_LIBRARY=d:\ruby19\lib\msvcr90-ruby191.lib -DRUBY_INCLUDE_PATH=d:\ruby19\include\ruby-1.9.1 -DQT_QMAKE_EXECUTABLE=d:\Qt\2009.04\qt\bin\qmake -Wno-dev -DENABLE_SMOKE=on -DENABLE_QTRUBY=on -DENABLE_QTWEBKIT_SMOKE=off -DENABLE_QTSCRIPT_SMOKE=off -DENABLE_QTUITOOLS_SMOKE=off -DENABLE_QTTEST_SMOKE=off -DENABLE_PHONON_SMOKE=off -DENABLE_QSCI_SMOKE=off-DENABLE_QWT_SMOKE=off -DENABLE_KDE_SMOKE=off -DENABLE_KDEVPLATFORM_SMOKE=off -DENABLE_KHTML_SMOKE=off -DENABLE_KTEXTEDITOR_SMOKE=off -DENABLE_SOLID_SMOKE=off -DENABLE_PLASMA_SMOKE=off -DENABLE_QTWEBKIT_RUBY=off -DENABLE_QTUITOOLS_RUBY=off -DENABLE_QTSCRIPT=off -DENABLE_QTTEST=off -DENABLE_PHONON_RUBY=off -DENABLE_QSCINTILLA_RUBY=off -DENABLE_QWT_RUBY=off -DENABLE_SOPRANO_RUBY=off -DENABLE_KDEVPLATFORM_RUBY=off -DENABLE_KORUNDUM_RUBY=off -DENABLE_KHTML_RUBY=off-DENABLE_KTEXTEDITOR_RUBY=off -DENABLE_SOLID_RUBY=off -DENABLE_KROSSRUBY=off -DENABLE_PLASMA_RUBY=off -DENABLE_QIMAGEBLITZ_SMOKE=off -DENABLE_QTDBUS_SMOKE=off -DQT_QTDBUS_LIBRARY:FILEPATH= .
1回目の実行ではCMakeの内部エラー(?)のためソリューションファイル等が生成されない。原因はおそらくこれ:
CMake Error at smoke/qt/QtGuess.txt:134 (list):この問題は上記コマンドをもう1度実行することで回避できる。2回目のcmake実行後、"kdebindings.sln" が生成されるので、 Visual Studio 2008 で開く。
各種手作業
DBusのサポートを外すため、複数の設定ファイルをビルド前に修正しておく必要がある。
- kdebindings/smoke/qt/qt_includes.h
- ファイル最下部: QtDBus.h をインクルードしている行をコメントアウト。
- kdebindings/smoke/qt/smokeconfig.xml
QDBus... という行をすべて削除。
generator.exe のビルド
Qtのヘッダーファイルをパースする generator.exe をビルドする。
- cppparser
- generator
- generator_dump
- generator_smoke
smokeqt プロジェクトのビルド
- ソリューション エクスプローラから smokeqt を右クリックで選択、プロジェクトのみをビルド。
- ※ x_1.cpp ~ x_20.cpp と smokedata.cpp は generator.exe で自動生成されるソースコードなので、ビルド開始時には存在しない。
qtruby4 プロジェクトのビルド
まず以下の箇所に修正が必要。
- kdebindings/ruby/qtruby/src/qtruby.h
- 関数 "rb_str_catf" の宣言をコメントアウト。gcc 専用の "__attribute__" が付加されている他、ruby 側での宣言と矛盾しているなどの問題があり、コンパイルエラーの原因となる。
本来だと "qtruby4shared" → "qtruby4" の順にビルドし2個のDLLを生成することになるが、なぜか qtruby4 側から qtruby4shared のシンボルが見つからないため、リンクエラーが発生してしまう。ここでは qtruby4shared のソースコードを qtruby4 に含めてしまい、1個のDLL (qtruby4.so) のみを生成するように変更する。
- "qtruby4shared" の "Source Files" 以下にある3個のファイル(handlers.cpp, marshall_types.cpp, Qt.cpp) を "qtruby4" プロジェクトの "Source Files" に移動。
- 出力ファイル名を qtruby4.dll (kdebindings\ruby\qtruby\src\Release\qtruby4.dll) から qtruby4.so に変更。
- qtruby4 プロジェクトの「追加の依存ファイル」から "Release\qtruby4shared.lib" を削除。
インストール
INSTALL プロジェクトはうまく動作しないようなので、以下手作業で各種ファイルを配置する。
- Qt, OpenSSL
- ビルドした DLL が d:\Qt\2009.04\qt\bin 以下にあるので d:\ruby19\bin にコピー
- OpenSSL の ssleay32.dll, libeay32.dll も d:\ruby19\bin にコピー
- qt4-qtruby
- kdebindings/smoke/qt/Release/smokeqt.dll を d:\ruby19\bin にコピー
- kdebindings/ruby/qtruby/src/Release/qtruby4.so を d:/ruby19/lib/ruby/site_ruby/1.9.1/i386-msvcr90 にコピー
- kdebindings/ruby/qtruby/src/lib/*.rb を d:/ruby19/lib/ruby/site_ruby/1.9.1/ へコピー
- kdebindings/ruby/qtruby/src/lib/Qt/qtruby4.rb を d:/ruby19/lib/ruby/site_ruby/1.9.1/Qt/ へコピー
実行
> ruby -rQt -e "app=Qt::Application.new(ARGV); hello=Qt::PushButton.new('Hello'); hello.show(); app.exec()"というone-liner を実行して、このようなウィンドウが表示されればOKです:
No comments:
Post a Comment