// 目次

趣味で計算流砂水理 Computational Sediment Hydraulics for Fun Learning

数値計算とか河川工学とかプログラミングのことを書いています

MENU

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 時点)。 以下よりダウンロード可能です。

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つに集約されます。

  1. VS2022 + oneAPI 2024.2 の組み合わせを守る(新しければ良いわけではありません)
  2. クラウド同期フォルダを避け、短いローカルパスでビルドする
  3. システムのコードページが UTF-8 以外の環境(日本語版 Windows など)では set CL=/utf-8 が必須
  4. ログをファイルに落とす(コンソール停止を避け、原因を追えるようにする)