https://nidclip.wordpress.com/2014/02/25/compiling-openvdb-the-openvdb-viewer-on-windows-7/ の手順にVisual Studio 2012でビルドしたときに躓いたところのメモをいくつか追加したもの.Visual Studio 2012でのビルドを前提としている.

  • OpenVDB本体ビルドのために必要なライブラリのビルド OpenVDBをビルドするために少なくともboost, zlib, OpenEXRのHalfクラス, TBBが必要なので, これらをビルドしておく必要がある(OpenVDBに含まれているViewerライブラリを使う場合はさらにglewとglfwも必要).
    • boostのビルド boostのダウンロードページからWindows用バイナリ (DOWNLOADのところのOTHER DOWNLOADSの"Prebuilt windows binaries."からmsvc-11(VS2012の場合)) をダウンロードしてインストールしておく.各*.hファイルが入ったboostフォルダごとインクルードフォルダに, スタティックリンクの場合は,libboost_chrono,date_time,system,thread-*.libをライブラリフォルダにコピーしておく.
    • zlibのビルド [build_zlib]を参考にビルドし,zlib.libをライブラリフォルダに,zlib.hとzconf.hをインクルードフォルダにコピーしておく.
    • OpenEXRのHalfクラスのビルド
      1. OpenEXRの中で必要なのはHalfクラスだけなので,OpenEXRのダウンロードページ からIlmBaseだけをダウンロードする.最新版のilmbase-2.2.0.tar.gzだとvcフォルダがなかったのでこの説明では一つ前のilmbase-2.1.0.tar.gzをダウンロードして使用している.
      2. ダウンロードしたファイルを解凍し,vc/vc8/IlmBase/IlmBase.slnをVisual Studioで開く(必要に応じてプロジェクトファイルの変換を行う).
      3. 必要に応じて構成を変えてHalfプロジェクトをビルドする(ソリューションではなくHalfプロジェクトだけでよい).
      4. vc/vc8/IlmBase/Win32 or x64/Release or DebugフォルダにできるHalf.libをライブラリフォルダに,Half.dllを実行フォルダに,Halfフォルダ内の*.hファイルをインクルードフォルダにコピーしておく.
    • TBBのビルド
      1. TBBのソースコードをダウンロードページからダウンロードする (tbb43_20150611oss_src.tgzなど).
      2. ダウンロードしたファイルを解凍し,build/vs2010/makefile.slnをVisual Studioで開く(必要に応じてプロジェクトファイルの変換を行う).
      3. 必要に応じて構成を変えてビルドする.
      4. build/vs2010/ia32 or intel64/Debug or Releaseフォルダにできるtbb.libをライブラリフォルダに,tbb.dllを実行フォルダに,includeフォルダ内のserialとtbbフォルダをフォルダごとインクルードフォルダにコピーしておく.
  • OpenVDBのビルド すべての必要なライブラリがビルドできたら,OpenVDB本体をビルドする.
    1. OpenVDBのダウンロードページからCore library(openvdb_*_*_*_library.zip)をダウンロードして解凍しておく(解凍フォルダを以下openvdbとする).
    2. Visual Studioを開いて新しいプロジェクトを作成する.プロジェクト作成ウィザードでは"Visual C++"の"Win32コンソールアプリケーション"を選択,右下の"ソリューションのディレクトリを作成"のチェックを外して"OK"&"次へ"をクリックする."アプリケーションの設定"のところで"アプリケーションの種類"を"スタティックライブラリ"にし,"追加のオプション"の"プリコンパイル済みヘッダー"のチェックを外して"完了"(SDLチェックも外しておくこと!).
    3. openvdbフォルダ内のヘッダファイル(*.h),ソースファイル(*.cc)をプロジェクトに追加する.io,math,metadata,tools,tree,utlsサブフォルダ内のヘッダ/ソースファイルも同様.
    4. math/Coord.hに
      #define NOMINMAX
      を追記,io/Compression.ccに
      #define ZLIB_WINAPI
      を追記する.
    5. OpenEXRのHalfクラスのビルドでHalfのみビルドした場合は,Types.hの
      #include <OpenEXR/half.h>
      #include <half.h>
      に修正する.
    6. プロジェクトのプロパティで"C/C++"⇒"コード生成"⇒"ランタイムライブラリ"をReleaseならマルチスレッド(/MT),Debugならマルチスレッドデバッグ(/MTd)にする.マルチスレッドDLLやマルチスレッドデバッグDLLにしたい場合は,OpenVDBを使用するプロジェクト側で"C/C++"->"プリプロセッサ"の"プリプロセッサの定義"に OPENVDB_STATICLIB を追加すること
    7. プロジェクトのプロパティで"C/C++"⇒"全般"の"追加のインクルードディレクトリ"に上記でビルドした必要なライブラリを入れたインクルードフォルダのパスとopenvdbがあるフォルダのパスを指定する.
    8. プロジェクトをビルド.
    9. OpenVDBのサイトのコードサンプルを使ってライブラリをテストしてみる.OpenVDBのlibファイルは自分がプロジェクトで設定したところにできるが,ヘッダファイルは面倒なのでopenvdbフォルダごとインクルードフォルダにコピーして,
      #include <openvdb/openvdb.h>
      とインクルードしてやればよい.
  • 注意事項
    • OpenVDBのビルドで符号付きと符号なしのキャストエラーやstd:getenvに関するエラーが出る場合は,プロジェクトのプロパティでC/C++->全般の"SDLチェック"を"いいえ"にする
    • サンプルプログラムを生成する際は,プロジェクトのプロパティのリンカー->入力の"特定の既定のライブラリの無視"にlibcmt.libを追加しておく(Debugの場合はlibcmtd.lib)

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2024-03-08 (金) 18:06:08