Alembic


Alembic 1.5.0 の Windows (VC2010/2012) でのビルドなど。

まず Alembic 1.5.0 を落としてきて解凍し、contrib というフォルダを作る。

contribの中に、依存ライブラリを落としてきて、全部がんばってビルドする

・openexrはついでに落としただけで別にいらない。

・glew, glut, pythonは無くてもAlembic自体はビルドできるけど、
  glewとglutは、SimpleAbcViewerという動作確認用ビューワーが使用しているので、合ったほうが良い。
  pythonについてはAlembicのpythonバインディングをビルドしたい場合入れるとよいが
  以前pythonバインディングビルドしようとしたらハマりまくってwin環境でビルドできなかったので、
  人柱になりたい方はどうぞ。

・楽してバイナリリリースを落としてきたりすると、どうせMTとかでビルドされているので
  ビルド時にリンクエラーが出るので、めんどくさいけど全部自環境でビルドしたほうが良いです。
  その際、コンパイラも合わせたほうが良い。違うとリンクではまる。

・Alembic/build/Windowsというフォルダにwinビルド用っぽい何かと、ビルドの説明が入ってるけど
  それらは古すぎて全く使い物にならないから注意。

---------------------

自分の場合は、すべての依存ライブラリをlibとしてビルドして、staticリンクし、一切DLLを使わないようにした。(趣味なので)
その過程で遭遇したことを、以下に覚えている限り書く。

・すべてのビルドで、コード生成のランタイムライブラリについて、"MT(Release)MTd(Debug)"か、"MD(Release)MDd(Debug)"か、は必ず統一すること。書くまでもないか。
・すべてのプロジェクトで、Win32-Debug/Release、x64-Debug/Releaseの計4回ずつのビルドを行った。大変めんどくさいが仕方ない。
・ほとんどのビルドで、cmake-guiを使った。cmake-guiではAdvanceに必ずチェックを入れて、全プロパティ出しておくこと。
・cmake-guiで~LIBRARYと書いてある項目は、ライブラリディレクトリではなく、.libファイルへのパスであることに注意。C:\hoge.libなどといったパスを入れる。

・zlib - HDF5で使うようにできる。
         ビルドのプロジェクト作成にはCMakeを使う。デフォルトでdllを出力する設定になっているので、lib出力に変更した。
         zlibというプロジェクトだけビルド成功すればOK。
         プリプロセッサにZLIB_DLLとか入ってるが、libに変更した後そのままビルドしても特に問題無かった。
         ビルド成果物の出力先の場所が分かりにくかった。(ビルドログを凝視した)
・szip - HDF5で使うようにできる。zlibとだいたい同じ。特につまるところは無かったはず。

・HDF5 - ビルドのプロジェクト作成にはCMakeを使う。
      Alembicはlibhdf5.libと、libhdf5_hl.libを使用しているようなので、HDF5_BUILD_HL_LIBに必ずチェックを入れること。
      また、CMake時にzilbとszipの使用を設定することになる。
           とりあえず使うにしてconfigureして、libのパスとかincludeパスとかエラーが出たところに逐一パスを再設定していく。
           zlibとszipを、alembic本家で使用しているのかしていないのか不明。
           libhdf5とlibhdf5_hlにビルドを通すわけだが、h5detectというプロジェクトによって作られる、H5detect.exeが見当たらないといって失敗する。
           H5detect.exeやH5make_libsettings.exeはうまくビルドされているはずなので、それを見当たらないといわれたフォルダに手動で移動させる必要があった。

・ilmbase - vc/vc8の中のプロジェクトを開いてコンバートしてビルドする。
              すべてデフォルトでDLL出力になっているのでlibに変更した。
              プリプロセッサの定義にOpenEXR_DLLや、_USRDLLなどがあるが、そのままで問題無かった。
              ビルドイベントのビルド後イベントに何か入っているが、libとしてビルドするときは必要ないので全部削除する。

・glew - .rcファイルのコメントが長いとかでビルドが通らない。公式によると、次回以降のリリースに対応が回されているので、 
           とりあえず文言を削除してビルド通すしかない。

・glut - 特に問題なくビルド通ったと思う。

・boost - vsのコマンドプロンプトで、booststrap.batを叩き、その後以下のコマンドでビルドする。
           ・win32 debug (lib)
           bjam link=static runtime-link=shared debug
           ・win32 release (lib)
           bjam link=static runtime-link=shared release
           ・x64 debug (lib)
           bjam link=static runtime-link=shared address-model=64 debug
           ・x64 release (lib)
           bjam link=static runtime-link=shared address-model=64 release

      stageというフォルダに逐一成果物ができるので、ビルドしてブツが出来るごとに別フォルダに移して退避させておく。
      1回のビルドごとにbin.v2というフォルダは削除したほうが良い。なんかキャッシュされてる模様。
           なお、dllでビルドする場合はlink=sharedに変更する。

---------------------

引き続いてAlembic本体のビルド。

・Alembic - CMakeで設定する。上記で作ったライブラリのlibのパスやincludeのパスを逐一入れていく。
        configureでARNOLD、python、PRMan、Mayaあたりで引っかかる。
               これらは使わない用にするため、alembicのルートフォルダにある、"CMakeLists.txt"をテキストエディタで直接開き
               該当と思われる個所をコメントアウトしていった。
              具体的には、
                ・PYILMBASEで検索してヒットしたIFからENDIFまで
                ・Include Python stuffの次の行
         ・Include Arnold stuffのIFからENDIFまで
                ・Include Maya stuffのIFからENDIFまで
                ・Include PyAlembic stuffのIFからENDIFまで
              その後再度cmake-guiでconfigureしてgenerate。
              出来たプロジェクトを開くと、大量にあるが、ビルドしないとけないのは以下
               ・Alembic~から始まるプロジェクトで、後ろにTestが付いていないものすべて。
               ・SimpleAbcViewer(リンクが通るかチェックするため/動作確認のために、絶対ビルドしておいたほうが良い)
              で大量にエラーが出るのでひたすら直す。以下直したエラー(覚えている限り)
              ・ilmbaseのヘッダが見つからない→ビルド対象プロジェクト(上記)をすべて選択状態にし、
                                                     プロパティを開き、すべての構成、すべてのプラットフォームにして、インクルードパスを追加する。
              ・zconf.hが見つからない→CMakeでzlibのvc用solutionを出力したディレクトリにあるので、上記と同様にインクルードパスに追加する。
              ・min/maxを使っている個所でエラー→これはwindows.hをインクルードして、かつimathを使っている場合に起きる気がする。
                                                          http://d.hatena.ne.jp/yohhoy/20120115/p1 の回避策3を適用した。
              ・SimpleAbcViewerでリンクエラー→ライブラリのパスが正しく指定されていなかったので、ひたすらライブラリパスを設定した
             とりあえずSimpleAbcViewerのexeが出きればalembicのビルド成功なので、
             公式からタコでも拾ってきて表示させると良い。

Comments