メモ書きなのでわかりにくくても勘弁して下さい
下準備
環境 ubuntu 13.10
apt でqt4のモジュールが上手く入らなかったので、qt4をソースからビルドした
qt-users.jp/download.html に行ってqt4.8.5 のlinux-x11のやつをダウンロードして展開して移動
/local/Qt-4.8.5に入れることにした
./configure -prefix=/local/Qt-4.8.5 && make
sudo make install
なぜかphononとwebkitがビルドされなかったので、あとで少し修正が必要になる
本題
READMEに書いてある通りだと上手くいかない
適当な場所に移動して
git clone git://gitorious.org/qt-labs/qtscriptgenerator.git
よくわかんないけど一応環境変数を設定しておく
export QTDIR=/local/Qt-4.8.5
export PATH=$QTDIR/bin:$PATH
あとは基本的にはREABMEに書いてあると通りだけどgeneratorを実行するときに --include-paths=/local/Qt-4.8.5/include という感じでオプションでヘッダのある場所をしていしないといけない。
classesが7だと失敗している。
無事generated_cppが生成されたあともphononとwebkitがないのでエラーになるので、qtbindings/qtbindings.pro の該当する行を削除して qmake && make する
めでたしめでたし
動機とか
QtとかKDEを触ってみたかったけど、C++使いたくなかったので(別にC++が嫌いってわけじゃなくて、いちいちコンパイルするのが好きじゃないから)、node.jsで慣れ親しんだ(?)javascriptで書いてみたかったのでやった。
なので、Qtのことは何も知らない。
あと、javascriptでメイン部分を書いて、rubyやpythonで関数をフックするみたいな事をやってみたかった(でもRubyもPythonも全く知らない)。
これをビルドする前はKDEのkrossとか触って、javaのRhinoやJRubyを触っていた。javaはjsで作ったオブジェクトをRubyからもアクセスできるけど、jsObj.mみたいな感じでメンバにはアクセス出来なかった。krossは途中で放棄したので分かんない。
バインディング生成器にはSWIGがあるが、Qtのバインディングを作るにはSignalだのSlotだのQt特有のmeta-object-systemを理解できるパーサーが必要になる(はず)。で、それらのパーサーをもった生成器がSMOKEやsipやjambi generator。
qtscript generatorはjambi generatorを元にして作られている。Qt5はよく知らない。
KDEのクラスはQtのクラスを継承してるみたいなので、いじくればKDEのバインディングも生成できるかもしれない。
参考資料:
shibu.jp/techmemo/qtscript_ja.htmlwww.linuxfromscratch.org/blfs/view/svn/x/qt4.html 続きを読む