2010/04/17

Clutter ToolkitのMinGWでのコンパイル

Clutter Toolkitはオープンソースのライブラリで、可搬性のあるアニメーション付きのUIインタフェースを提供します。

iPhone OSなどに代表されるように、最近ではアニメーションを用いたUIが普通になってきています。GUIによるアニメーションによって、処理による遅延を上手く隠蔽することができれば、ユーザのストレスの軽減になる可能性があるためです。また、タッチパネル上でのスワイプによるページ送りなどのようにユーザの操作とアニメーションが非常によい組み合わせになっている場合もあります。

Clutter ToolkitはGNU LGPLの下で提供されています。Moblin (ネットブック向けOS) にも採用されており、今後もオープンソース系のソフトウェアで使用が広がっていくでしょう。

Clutter Toolkitは内部でOpenGLを使用していますが、APIで隠蔽されているため、ユーザはOpenGLを意識せずに使用できます。また、Clutter Toolkitはオブジェクト指向ライブラリであり、GTK+などで使用されているGObjectを基底クラスとしています。

この記事では、Clutter Toolkitのコンパイルを行います。基本的には、手順はbuild/mingw/READMEに書かれていることと同じですが、面倒な箇所は省略しています。

下準備

Mingwはインストール済みであることが前提です。入っていない場合は猫科研究所パックを入れてください。

次に、GTK+のうち、clutterに必要なパッケージを入れます。

  • http://www.gtk.org/download-windows.html (通常はこちら)
  • http://www.gtk.org/download-windows-64bit.html (64bit OSを使用している場合はこちら)

必要なものは、次の通りです。

  • glib
  • gdk-pixbuf
  • cairo
  • pango
  • pkg-config
  • proxy-intl

これらのパッケージを解凍してc:/msys/あたりに入れます。

次に古いglext.hを置き換えます。http://www.opengl.org/registry/api/glext.hからglext.hを取得し、/include/GL/glext.hを置き換えてください。

そして、gl.hの後ろの「Begin system-specific stuff」セクションあたりに次の2行を追加します (他によい方法があればお知らせください)。

#include <windows.h>
#include <GL/glext.h>

コンパイル

まず、Clutter Toolkitからパッケージを取得します。

パッケージを取得後に解凍して、configureを実行しますが、バックエンドがinternalの場合には、後のインタラクティブテストでpng画像が読み込めないのでgdk-pixbufにしておきます。

また、LDFLAGSのオプションを忘れると、最後の段階で「bindtextdomainがない」というリンカエラーとなりますので、忘れずに付けてください。

LDFLAGS=-lintl ./configure --with-flavour=win32 --with-imagebackend=gdk-pixbuf
(中略)
Clutter - 1.2.4 (release) 
 * Global:
        Prefix: /usr/local
        Flavour: win32/gl
        Target library: libclutter-win32-1.0.la
 * Compiler options:
        Clutter debug level: minimum
        COGL debug level: minimum
        Compiler flags:
         Profiling enabled: no
        Enable coverage tests: no
 * Documentation:
        Build API Reference: no
        Build Additional Documentation: no (Generate PDF: no)
 * Extra:
        Build introspection data: auto
        Build conformance test suite: yes
        JSON-GLib: internal
 * COGL Backend:
        Driver: gl
        GL header: GL/gl.h
        Image backend: gdk-pixbuf
 * Clutter Backend:
        Windowing system: win32

あとはmakeするだけです。

make

コンパイル時にエラーが出る場合

次のようなエラーが発生する場合には、glib-devに含まれているglib-genmarshalがパス中に存在しないので通しておきましょう。 同様にglib-mkenumsも必要と思われます。

GEN stamp-clutter-marshal.h
/bin/sh: line 2: --prefix=clutter_marshal: command not found
make[2]: *** [stamp-clutter-marshal.h] Error 127
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

また、猫科研究所パックでは、libintlについてはlibintl.hをc:\msys\mingw\include\に、libintl.aをc:\msys\mingw\lib\に入れないと駄目でした。

テストプログラムの実行

コンパイル後、tests/interactive/.libsにあるtest-interactive.exeを親ディレクトリ (つまりtests/interactive) に移動させた後、ターミナル上でtests/interactiveに移動して次のコマンドを実行します。

sh test-box-layout.exe

なお、手元の環境ではいくつかのプログラムで実行が失敗しました。また、実行時に落ちてしまう場合にはドライバを最新のものに更新してみてください。

まとめ

MingwでのClutter Toolkitのコンパイルの仕方について述べました。

リンク

1 件のコメント:

  1. 大変参考になりました。
    英語ができないアマチュアには嬉しい情報です。
    ありがとうございます。

    返信削除

注: コメントを投稿できるのは、このブログのメンバーだけです。