OpenVDBを使ったアプリをWindowsでビルドしたくなったのでvcpkgというVisual C++のパッケージマネージャで環境を用意してみました。
VC++の準備
Visual Studioを使わないのであれば、chocolateyでインストールすると楽。
choco install visualstudio2022buildtools choco install visualstudio2022-workload-vctools
私は以前WindowsでRust環境をつくった際に以下の記事を参考にして環境を作りました。(Rust環境にはc++ビルドツールが必要)
# WindowsでRustの開発環境を構築する(not on WSL)
vcpkgをインストール
vcpkgのgitリポジトリを適当なディレクトリへクローンし、中のバッチファイルを実行する。
git clone https://github.com/microsoft/vcpkg C:\dev\vcpkg cd /d C:\dev\vcpkg bootstrap-vcpkg.bat
すると、vcpkgの実行ファイルができる。また、このgitリポジトリの中にインストールされたパッケージ群が入る
次に、各種環境変数を追加する。Powershellでは$PROFILEが指すファイルが最初に読み込まれる。notepad $PROFILEでメモ帳を開いて確認する。もしファイルが存在しない場合はそのまま作成できるので作成し、以下のように環境変数を設定する。(コントロールパネルから設定しても問題ないはず。)
$env:VCPKG_DEFAULT_TRIPLET = "x64-windows" $env:VCPKG_ROOT = "C:\dev\vcpkg" $env:Path = "$env:Path;$env:VCPKG_ROOT"
OpenVDBをインストール
ここまできたらopenvdbがインストールできるはず。それなりに時間がかかる。
vcpkg install openvdb vcpkg install openvdb[tools] --recurse # recurseはtools付きでビルドし直す明示フラグ
toolsの方はvdbファイルのプレビューツール(vdbview)とかが入る。ちなみにインストールされたバイナリファイルは$env:VCPKG_ROOT\installed\x64-windows\tools\openvdb
あたりにあるはず。
テストビルド
適当にディレクトリを作って簡単なサンプルをビルドしてみる。(以下のコードはChatGPTにが生成してくれた。)
CMakeList.txt
cmake_minimum_required(VERSION 3.20) project(openvdb_test LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(OpenVDB CONFIG REQUIRED) add_executable(openvdb_test main.cpp) target_link_libraries(openvdb_test PRIVATE OpenVDB::openvdb)
main.cpp
#include <openvdb/openvdb.h> #include <iostream> int main() { openvdb::initialize(); // 例: float グリッドを作って 1ボクセルだけ値を入れる openvdb::FloatGrid::Ptr grid = openvdb::FloatGrid::create(/*background*/0.0f); grid->setName("density"); auto acc = grid->getAccessor(); acc.setValue(openvdb::Coord(0, 0, 0), 1.0f); std::cout << "OpenVDB OK. active voxel count = " << grid->activeVoxelCount() << std::endl; openvdb::uninitialize(); return 0; }
以下のコマンドでcmakeを実行。
cmake -S . -B build ` -DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_ROOT\scripts\buildsystems\vcpkg.cmake" ` -DVCPKG_TARGET_TRIPLET=x64-windows ` -DCMAKE_POLICY_DEFAULT_CMP0167=NEW
DCMAKE_POLICY_DEFAULT_CMP0167はCMP0167の警告がでるので設定している。これはvcpkg側がFindBoostという非推奨モジュールを使っているためにでている警告らしい。なくても問題なくビルドできたが、ここで指定しておくとBoost探索を FindBoost 依存から、BoostConfig.cmake 探索へ切り替えることができるとのこと。
以下のコマンドでビルドを実行
cmake --build build --config Release .\build\Release\openvdb_test.exe
生成された実行ファイルを実行してOpenVDB OK. active voxel count = 1とでたら成功しているはず。
おわり
windowsでc++のライブラリをビルドして用意するとか鬼門だと思っていたんですが、ChatGPTとvcpkgのおかげで以外と簡単にできました。環境構築はめちゃくちゃつらいのでChatGPTがいい感じにアドバイスくれるのはとてもありがたいですね……



















































