#author("2016-11-01T14:34:35+09:00","default:pbcglab_user","pbcglab_user")
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のダウンロードページ:http://www.boost.org/users/download/]]から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をインクルードフォルダにコピーしておく.
[[build_zlib]]を参考にビルドし,zlib.libをライブラリフォルダに,zlib.hとzconf.hをインクルードフォルダにコピーしておく.
--OpenEXRのHalfクラスのビルド
+++OpenEXRの中で必要なのはHalfクラスだけなので,[[OpenEXRのダウンロードページ:http://www.openexr.com/downloads.html]]
からIlmBaseだけをダウンロードする.最新版のilmbase-2.2.0.tar.gzだとvcフォルダがなかったのでこの説明では一つ前のilmbase-2.1.0.tar.gzをダウンロードして使用している.
+++ダウンロードしたファイルを解凍し,vc/vc8/IlmBase/IlmBase.slnをVisual Studioで開く(必要に応じてプロジェクトファイルの変換を行う).
+++必要に応じて構成を変えてHalfプロジェクトをビルドする(ソリューションではなくHalfプロジェクトだけでよい).
+++vc/vc8/IlmBase/Win32 or x64/Release or DebugフォルダにできるHalf.libをライブラリフォルダに,Half.dllを実行フォルダに,Halfフォルダ内の*.hファイルをインクルードフォルダにコピーしておく.
--TBBのビルド
+++TBBのソースコードを[[ダウンロードページ:https://www.threadingbuildingblocks.org/download]]からダウンロードする
(tbb43_20150611oss_src.tgzなど).
+++ダウンロードしたファイルを解凍し,build/vs2010/makefile.slnをVisual Studioで開く(必要に応じてプロジェクトファイルの変換を行う).
+++必要に応じて構成を変えてビルドする.
+++build/vs2010/ia32 or intel64/Debug or Releaseフォルダにできるtbb.libをライブラリフォルダに,tbb.dllを実行フォルダに,includeフォルダ内のserialとtbbフォルダをフォルダごとインクルードフォルダにコピーしておく.

-OpenVDBのビルド
すべての必要なライブラリがビルドできたら,OpenVDB本体をビルドする.
++[[OpenVDBのダウンロードページ:http://www.openvdb.org/download/]]からCore library(openvdb_*_*_*_library.zip)をダウンロードして解凍しておく(解凍フォルダを以下openvdbとする).
++Visual Studioを開いて新しいプロジェクトを作成する.プロジェクト作成ウィザードでは"Visual C++"の"Win32コンソールアプリケーション"を選択,右下の"ソリューションのディレクトリを作成"のチェックを外して"OK"&"次へ"をクリックする."アプリケーションの設定"のところで"アプリケーションの種類"を"スタティックライブラリ"にし,"追加のオプション"の"プリコンパイル済みヘッダー"のチェックを外して"完了"(SDLチェックも外しておくこと!).
++openvdbフォルダ内のヘッダファイル(*.h),ソースファイル(*.cc)をプロジェクトに追加する.io,math,metadata,tools,tree,utlsサブフォルダ内のヘッダ/ソースファイルも同様.
++math/Coord.hに
 #define NOMINMAX
を追記,io/Compression.ccに
 #define ZLIB_WINAPI
を追記する.
++OpenEXRのHalfクラスのビルドでHalfのみビルドした場合は,Types.hの
 #include <OpenEXR/half.h>
を
 #include <half.h>
に修正する.
++プロジェクトのプロパティで"C/C++"⇒"コード生成"⇒"ランタイムライブラリ"をReleaseならマルチスレッド(/MT),Debugならマルチスレッドデバッグ(/MTd)にする.マルチスレッドDLLやマルチスレッドデバッグDLLにしたい場合は,OpenVDBを使用するプロジェクト側で"C/C++"->"プリプロセッサ"の"プリプロセッサの定義"に OPENVDB_STATICLIB を追加すること
++プロジェクトのプロパティで"C/C++"⇒"全般"の"追加のインクルードディレクトリ"に上記でビルドした必要なライブラリを入れたインクルードフォルダのパスとopenvdbがあるフォルダのパスを指定する.
++プロジェクトをビルド.
++[[OpenVDBのサイトのコードサンプル:http://www.openvdb.org/documentation/codeExamples.html]]を使ってライブラリをテストしてみる.OpenVDBのlibファイルは自分がプロジェクトで設定したところにできるが,ヘッダファイルは面倒なのでopenvdbフォルダごとインクルードフォルダにコピーして,
 #include <openvdb/openvdb.h>
とインクルードしてやればよい.

-注意事項
--OpenVDBのビルドで符号付きと符号なしのキャストエラーやstd:getenvに関するエラーが出る場合は,プロジェクトのプロパティでC/C++->全般の"SDLチェック"を"いいえ"にする
--サンプルプログラムを生成する際は,プロジェクトのプロパティのリンカー->入力の"特定の既定のライブラリの無視"にlibcmt.libを追加しておく(Debugの場合はlibcmtd.lib)

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS