2010年12月12日日曜日

Collada DOM 2.2をコンパイルしてみた。

Bulletでモデルファイルを読み込みたい!
というわけで付属のExtra/Serializeを頑張ってコンパイル(.blendや.bulletを読み書きできるような気がした)したが、使い方がさっぱりわからない上、修正しないとコンパイルが通らない、ドキュメントもな〜い!という糞仕様なので「もしかして自分で1から作ったほうが早いんじゃね?」と思いCollada Domの導入に挑戦。

そしたら余計ひどかった。。。
まず、Macでやると勝手にframeworkをつくるんだけど、そのframeworkをいつもどおり「-framework」で指定してもヘッダファイルがnot found、しかも、colladaのヘッダからcolladaのヘッダを見つけることができない! テストぐらいしろよ、、、

そこで自分でCMakeファイルを書いてコンパイルしようとしたら、、、
まぁ紆余曲折は続きで書くとして、とりあえず頑張ってMacでCollada DOM 2.2のコンパイルができるようになったので、途中経過だがGoogle codeにおいとく
CMakeLists.txtだけでもよかったんだけど、自分で分からなくなっちゃうので全部のせとく。

注1:Collada DOM用のCMakeLists.txtの例であって、Collada DOMのことがわかってるわけではありません。APIやドキュメント、バグなどについてはColladaの公式を御覧ください。
注2:ライセンスなどはCollada DOMのとminizipのライセンスに準じます。



[使い方]
とりあえず、依存しているライブラリを入れます。
Mac Portsを使っていれる例
%port install boost +universal
%port install xml2 +universal
%port install pcre +universal
%port install zlib +universal
つぎに、collada-dom-2.2/minizipをコンパイルします。(minizipはportでは入らないので、collada-dom/dom/external-libs/minizipを若干修正したものを使います...)
%cd minizip
%cmake -DCMAKE_OSX_ARCHITECTURES='i386' .
%make
インストール先の設定とかしてないのでmake installはやらない。

そのあとでcollada-dom-2.2をコンパイルします。
%cd ..
%cmake -DCMAKE_OSX_ARCHITECTURES='i386' .
%make
これで「libcollada14dom.dylib」ができます。

「libcollada15dom.dylib」が欲しい人はcollada-dom-2.2/CMakeLists.txtの修正が必要です。
あと依存するライブラリをMac ports以外で入れた人もcollada-dom-2.2/CMakeLists.txtとcollada-dom-2.2/minizip/CMakeLists.txtの修正が必要です。


[メモ]
minizipはzlibの一部らしい。ただし、Macでコンパイルするのは若干面倒。「#ifdef unix」とかされてるので、、、

Collada DOMをコンパイルするときはdaeと1.4/dom(もしくは1.5/dom)のソースコードも一緒にコンパイルしないといけない。互いに依存しているので。。。

Collada DOMをコンパイルするときは利用するXMLパーサによって違うフラグを付けないといけない。xml2を使うときは「-DDOM_INCLUDE_LIBXML」、TinyXMLを使うときは「-DDOM_INCLUDE_TINYXML」をコンパイルすること。

「libcollada14dom.dylib」を使ったプログラムをコンパイルするときは「-lboost_filesystem -lboost_system」してBoostのライブラリもリンクしないといけない。



0 comments:

コメントを投稿