#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)