Trackback の仕組みはありませんので、コメントにでも残していただくと嬉しいかも、です。
(2011.05.01)
■Qt での開発
Qt (キュート) はクロスプラットフォームのアプリケーションフレームワーク。 GoogleEarth や Skype は Qtで作られているようですね。 で、最近、こいつを勉強しています。
フレームワークとしてネイティブの言語はC++。 もちろん各種言語向けに binding はありますが、 個人的には(やや不本意ながら)C++は得意な言語の一つですので、これ自体は問題ありません。
とりあえず「入門Qt4プログラミング」というオライリーの本を買って一通り目を通しました。 読んでみての感想は、フレームワークとしては結構筋が良さそうです。少なくとも MFCよりは断然に。 (まぁ私がそれなりにちゃんと使ったことがあるC++のフレームワークはせいぜい PowerPlant(Metrowerks CodeWarrior), MacApp(Apple), MFC(Microsoft), VCL(Borland) くらいしかないんですが…)
ちなみに、現在の Qt4.7 は GPL/LGPL/Commercial のトリプルライセンス。
ざっと集めたMacでのTipsはこんな感じ。主に自分用メモ。
-
Developing Qt Applications on Mac OS X
- sdk バージョンを変えたり、gcc 以外 llvm でコンパイルするにはどうすればよいのか、など
- How to package Qt Framework on Mac OS X?
- Qtをインストールすると入る macdeploymentqt ツールを使うと、再配布パッケージ用に Qtのframework などをApplication Bundleに内包させることができることが書いてある
- Qt for Mac OS X - Specific Issues
- 上記以外、右クリックのハンドルはどうするか、などなども載っている
Qt がどうやってクロスプラットフォームに対応しているか、という機構はちょっと面白いと感じました。
- まず、開発自体はプラットフォーム非依存なプロジェクトファイル(.pro) にファイルを追加したり設定したりすることで進んでいく
- ビルドするときには qmake というツールで .pro を処理する
- すると各プラットフォームごとの開発環境でビルドするための Makefileなどができる
- あとはこの Makefileを make(MacやLinuxなど) や nmake(Winの VisualStudio) で処理する
qmake を通すときに起きることは以下のような感じ(いまのところの理解)。
- .ui という uiフォームファイルから、それと等価な C++ クラスのコードを生成する
- moc (Meta Object Compilar) とゆーツールで C++コードを処理して、シグナル/スロット/実行時型情報などの Qt 特有の情報をC++コードとして反映する
- この際にコーディング時に書いておいた Q_OBJECT や slot, emit などのマクロやキーワードを利用する(一種のプリプロセッサですね)
- qmake の起動引数で指定することで Makefile 以外にも .xcodeproj (Xcodeのプロジェクトファイル) や .vcproj (VSのプロジェクトファイル) を生成することもできる
- つまり、Xcode や VisualStudio などの IDEで扱うこともできる
フレームワーク本体以外にも、Qt Creator という IDEも用意されており Qt アプリの開発であれば一番効率よく開発できるはず。 Qt Creator であればソースコードデバッグも可能です。
しばらく遊んでみることになりそうです。