Windows環境でDelft3D 4 Suite 4.07のソルバーをビルドする(2026.09時点)
You can find the English article here
基本的には公式 GitHub:https://github.com/Deltares/Delft3D/blob/main/doc/compiling_Windows.mdのとおりに進めると問題ありませんが、つまずいた点をまとめておきます。
Delft3D 4 Suite の GUI パッケージには計算カーネルが含まれていません。GUI を起動すると次のエラーが出て何も始まりません。
couldn't read file ".../kernels/x64/bin/create_config_xml.tcl": no such file or directory
これは不具合ではなく仕様で、カーネルは利用者が自分でソースからビルドする必要があります。この記事では、Windows 環境で実際にビルドを通すまでに踏んだ手順と、途中で遭遇したエラーの対処をまとめます。
1. 環境の準備
| 項目 | 選定 |
|---|---|
| Visual Studio | 2022(2026 ではない) |
| Intel oneAPI | Fortran Compiler / MPI Library / Math Kernel Library、2024.2 推奨 |
| Cygwin (64bit) | C:\cygwin64 に、make と python3 を明示選択 |
| Python 環境 | uv(Python と Conan 2 を仮想環境に導入) |
| その他 | CMake, Git |
Visual Studio
「C++ によるデスクトップ開発」ワークロードに加え、以下を個別にチェックします。これらは既定では入らず、後段でリンクエラーになります。
- C++/CLI サポート(v143 ビルドツール用)
- v143 ビルドツール用 C++ MFC(x86 および x64)
- 最新の Windows SDK
VS2026 ではなく VS2022 を使ってください。 Conan プロファイル名が delft3d_windows_msvc_194_v3(194 = VS2022 / v143 ツールセット)であることからも分かるとおり、Deltares がテストしている組み合わせは VS2022 + oneAPI 2024.2 です。サードパーティライブラリもこの組み合わせでコンパイルされています。VS2026 とは共存できるので、アンインストールは不要です。
メモ
参考サイト:https://kashiwaba-yuki.com/windows-visualstudio-download(日本語)
最新バージョンではない Visual Studio の Community エディションを公式サイトからダウンロードできなくなっていました(2026.09 時点)。 以下よりダウンロード可能です。
- Visual Studio 2017 Community: https://aka.ms/vs/15/release/vs_community.exe
- Visual Studio 2019 Community: https://aka.ms/vs/16/release/vs_community.exe
- Visual Studio 2022 Community: https://aka.ms/vs/17/release/vs_community.exe
Intel oneAPI
VS2022 を先に入れてから oneAPI を入れます。 oneAPI の Visual Studio 統合は、インストール時点で存在する VS に対して行われるためです。既に oneAPI が入っている場合は、「アプリと機能」から変更(Modify)を実行し、統合先に VS2022 を選び直してください。
確認方法:VS2022 の新規プロジェクト作成画面で、言語ドロップダウンに「Fortran」が現れれば統合成功です。
Cygwin
依存パッケージの PETSc は configure が Unix シェルスクリプトのため、Windows ネイティブでは動きません。Conan レシピが Cygwin の bash を経由して実行します。
make と python3 は既定では入らないので、setup-x86_64.exe のパッケージ選択画面で View を「Full」にし、New 列をクリックしてバージョンを選択してください。Skip のままだとインストールされません。
2. ビルド
作業ディレクトリ
C:\checkouts\Delft3D
クラウド同期フォルダ(Dropbox、OneDrive 等)の配下でビルドしてはいけません。 中間ファイルの生成と削除が大量に発生するため、同期処理がファイルロックを起こして不可解な失敗を招きます。パス長制限にも引っかかりやすくなります。短いローカルパスに置いてください。
ソース取得
git clone https://github.com/Deltares/Delft3D.git C:\checkouts\Delft3D
Python 環境(uv)
Python 環境は公式手順のとおり uv で構築しました。システムに入っている Python や pip で個別に Conan を入れる必要はなく、リポジトリ直下で uv が仮想環境(.venv)を作成し、Conan 2 を含む必要なパッケージをまとめて導入します。
cd C:\checkouts\Delft3D
uv sync
.venv\Scripts\activate
以降の python / conan コマンドは、この仮想環境を有効化した状態で実行してください。有効化し忘れると、システム側の Python や別バージョンの Conan が呼ばれ、プロファイルやリモートの設定が噛み合わなくなります。where python と where conan で .venv 配下が先頭に表示されることを確認しておくと確実です。
なお、ビルドは後述の oneAPI コマンドプロンプトから実行するため、新しいプロンプトを開くたびに .venv\Scripts\activate を実行し直す必要があります(uv run python ... として実行しても構いません)。
Conan 初期化
仮想環境を有効化した状態で Conan を初期化します。
python run_conan.py initialize external
external は社外開発者向けです。deltares は Deltares 社内 Nexus 用で、外部から実行すると internal-artifacts.deltares.nl への接続がタイムアウトしてビルドが止まります。
初期化後に確認します。
conan remote list
期待される出力は次の1行のみです。内部リモートが有効なままなら conan remote disable <name> で無効化してください。
local-recipes: C:\checkouts\Delft3D\conan [local-recipes-index, Enabled: True]
システムのコードページが UTF-8 以外の環境での設定(重要)
set CL=/utf-8
日本語・中国語・韓国語版 Windows など、システムのコードページが UTF-8 以外の環境では、これを設定しないと依存パッケージのビルドが失敗します。 日本語環境(CP932)での実例として、expat のコンパイルで次のエラーが出ます。
random_rand_s.c(1,1): warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます random_rand_s.c(47,1): error C1020: 予期しない #endif です
ソースは UTF-8(BOM なし)ですが、MSVC は BOM のないファイルをシステムロケールのコードページ(日本語なら 932)として読みます。著作権表記に含まれる非 ASCII 文字のバイト列が誤解釈され、後続文字を巻き込んでプリプロセッサ指令の対応が崩れます。error C1020 は結果であって原因ではありません。
特に影響が出やすいのは、CP932(日本語)、CP936(簡体字中国語)、CP949(韓国語)、CP950(繁体字中国語)のような 2 バイト系コードページです。CP1252(西欧)などの 1 バイト系コードページでは同じエラーには至りにくいものの、文字化けや警告の原因にはなり得るため、UTF-8 以外の環境では設定しておくのが無難です。
CL 環境変数は MSVC が起動時に読んでコマンドラインの先頭に追加するため、すべての cl.exe 呼び出しに効きます。Conan プロファイルの tools.build:cflags でも指定できますが、PETSc のように Conan 経由でフラグが渡らないパッケージがあるので、環境変数の方が確実です。
実行
スタートメニューの 「Intel oneAPI command prompt for Intel 64 for Visual Studio 2022」 から実行します。通常の cmd や PowerShell では Intel / Visual Studio の環境変数が引き継がれません。
set CL=/utf-8 cd C:\checkouts\Delft3D .venv\Scripts\activate python build.py --build --build-dependencies --config d3d4-suite > build.log 2>&1
--build-dependencies は初回のみ必要です(PETSc 等をローカルビルドします)。初回は数時間規模かかりますが、2回目以降は Conan キャッシュが効いて大幅に短縮されます。
出力はファイルにリダイレクトしてください。 コンソールに直接出力すると、簡易編集モード(QuickEdit Mode)が有効な環境では、ウィンドウを誤クリックした瞬間に選択モードへ入って出力がブロックされ、プロセス全体が停止します。行の途中で止まる、毎回違う箇所で止まる、という症状はこれを疑ってください。コンソールで止まった場合は Enter か Esc で再開できます。
3. カーネルの配置
ビルドが成功すると install_d3d4-suite フォルダが生成されます。GUI のインストール先に kernels\x64 を作成し、中身をそのままコピーします。
C:\Program Files\Deltares\Delft3D 4.07.02\kernels\x64\
├─ bin\
└─ share\
Deltares の公式手順には「bin, lib, share をコピー」とありますが、これは Linux や FM Suite を含めた包括的な記述です。Windows では共有ライブラリが .dll として bin に置かれるため、lib フォルダは生成されないことがあります。lib が持つのはリンク用のインポートライブラリで、計算実行には不要なので問題ありません。bin に d_hydro.exe と libflow2d3d.dll があれば正常です。
kernels\x64\bin\create_config_xml.tcl が存在すれば完了です。GUI から計算を実行できます。
4. トラブルシューティング早見表
| 症状 | 原因 | 対処 |
|---|---|---|
Conan profile ... not found |
Conan 初期化未実施 | python run_conan.py initialize external |
conan が見つからない/設定が反映されない |
uv の仮想環境が未有効化 | .venv\Scripts\activate、where conan で確認 |
internal-artifacts.deltares.nl タイムアウト |
社内リモートが有効 | conan remote disable |
PETSc Error 127 |
bash / make / python3 が見つからない | Cygwin にパッケージ追加、プロファイルの tools.microsoft.bash:path 確認 |
error C1020: 予期しない #endif |
UTF-8 ソースをシステムコードページ(CP932 等)で誤読 | set CL=/utf-8 |
| 行の途中で停止 | コンソールの簡易編集モード | Enter を押す/ログをファイルにリダイレクト |
| 毎回違う箇所で停止 | Cygwin の fork 失敗 | 管理者権限で rebaseall を実行 |
| ビルドが極端に遅い | Defender のスキャン | 除外設定 |
真の原因は Python のトレースバックではなく、C:\Users\<user>\.conan2\p\b\<package>\b 配下のログ、またはリダイレクトした build.log に記録されています。エラーの表層だけを見て対処すると遠回りになります。
まとめ
つまずきやすい点は次の4つに集約されます。
- VS2022 + oneAPI 2024.2 の組み合わせを守る(新しければ良いわけではありません)
- クラウド同期フォルダを避け、短いローカルパスでビルドする
- システムのコードページが UTF-8 以外の環境(日本語版 Windows など)では
set CL=/utf-8が必須 - ログをファイルに落とす(コンソール停止を避け、原因を追えるようにする)