VTKをWindowsにインストールするまでに
はじめに
VTKとは
正式名称: Visualization Toolkit
役割: 科学技術計算や医用画像処理の「可視化ライブラリ」
- 3Dグラフィックス(点群・メッシュ・体積データ)の表示
- CT/MRIなど医用画像(DICOM)の読み込み・レンダリング
- CFDや有限要素法(FEM)のシミュレーション結果を可視化
- 等値面抽出(isosurface)、ボリュームレンダリング、ストリームライン表示など
開発環境
- Windows 11
- Visual Studio 2022 (Community)
- vcpkg 最新版
- CMake 3.31.9(途中でアンインストール)
手順とつまずきポイント
1. vcpkgの準備
まずはvcpkgを用意します。
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
bootstrap-vcpkg.bat
2. CMakeのアンインストール
その後 [pugixml] Build error on x64-windows #42385 に遭遇。
エラーログ
-- Extracting source C:/vcpkg_clean/downloads/zeux-pugixml-v1.15.tar.gz
CMake Error at scripts/cmake/vcpkg_execute_required_process.cmake:127 (message):
Command failed: "C:/Program Files/CMake/bin/cmake.exe" -E tar xjf C:/vcpkg_clean/downloads/zeux-pugixml-v1.15.tar.gz
Working Directory: C:/vcpkg_clean/buildtrees/pugixml/src/v1.15-8a9beec4a5.clean.tmp
Error code: 1
原因
-
-E tar xjfは bzip2(.tar.bz2) 用のフラグ。 - 実体は .tar.gz (gzip) だったため展開に失敗。
その他のtar.gzは展開可能だがzeux-pugixml-v1.15.tar.gzは失敗 - さらに、Visual Studio付属のCMakeと手動インストールしたCMakeが混在し、誤ったCMakeが呼ばれていました。
解決
- 手動インストールしたCMakeをアンインストールし、競合を解消。
- vcpkgが 必要なバージョンのCMakeを
downloads/tools/以下に自動取得して使用するようになり、エラーが解消。
👉 学び:CMakeは必ずしもグローバルインストール不要。vcpkgに任せるのが安定。
3. クラシックモードでの限界
VTKパッケージ内のseacasのインストールで失敗
クラシックモード(vcpkg install vtk)で挑戦しましたが、
fatal error C1083: 'GKlib.h': No such file or directory
依存関係が複雑で、クラシックモードでは解決困難でした。
必要なものだけ個別にインストールすることにしました...
4. マニフェストモードに切り替え
そこで マニフェストモード に移行。
プロジェクトルートに vcpkg.json を置きます。
{
"name": "vtk-min",
"version": "0.1.0",
"dependencies": [
{ "name": "vtk", "default-features": false, "features": ["qt"] }
]
}
グローバルで管理のクラシックモードよりプロジェクトごとに管理できるため便利かも
毎回 .jsonを書くのは面倒だが....
# vcpkg ルート(任意。C:\vcpkg を使っている想定)
setx VCPKG_ROOT C:\vcpkg_clean
# マニフェストでもグローバル installed を使わせる
setx VCPKG_INSTALLED_DIR C:\vcpkg_clean\installed
# ダウンロードキャッシュも共通化
setx VCPKG_DOWNLOADS C:\vcpkg_clean\downloads
マニフェストの既定は「プロジェクトローカルに隔離」だから
今回、VCPKG_INSTALLED_DIR を指定して“集約先”を明示しました。
5. インストール実行
以下の手順でCMakeからビルドを実行。
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build build
まとめ
- CMakeはグローバル必須ではない → vcpkgが最適バージョンを自動取得。
- Visual Studio付属CMakeと競合 → 手動インストールCMakeは不要なら削除。
- クラシックモードは依存解決で苦戦しやすい → マニフェストモードが安定。
- pugixml / seacas でハマったが、CMake整理+マニフェスト移行で解決。
- セキュリティソフトも意外な落とし穴になる。
(最初、ノートンにブロックされビルドした.exeがはじかれる)