bar_1

contents_map

2025年5月16日金曜日

『流体エンジンアーキテクチャ』サンプルコードのビルド方法

基本的には fluid-engine-dev.gitINSTALL.md の通りに:

mkdir build
cd build
cmake ..
make

でいい. だが, そのままではPythonライブラリのバージョンとコンパイラのオプション, ヘッダの構成に起因してエラーとなる.

そこで python3.10環境とパッケージ setuptools, pybind11; C++のソースとして ssize_t のためのラッパーを用意して, 以下のように cmake を実行する.

cmake .. -DPYTHON_EXECUTABLE=$(which python3) \
-DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS -Wno-error=unused-but-set-variable \
-Wno-error=alias-template-in-declaration-name \
-include /full/path/to/ssize_t_wrapper.h"

以下, 詳細を説明する.


環境

ビルドを確認した OS, Xcode, Command Line Toolsのバージョンは以下の通り.

$ sw_vers 
ProductName: macOS
ProductVersion: 15.4.1
BuildVersion: 24E263

$ uname -a
Darwin clt-m1.local 24.4.0 Darwin Kernel Version 24.4.0: Fri Apr 11 18:32:43 PDT 2025; root:xnu-11417.101.15~117/RELEASE_ARM64_T8103 arm64

$ xcodebuild -version
Xcode 16.3
Build version 16E140

$ pkgutil --pkg-info=com.apple.pkg.CLTools_Executables
package-id: com.apple.pkg.CLTools_Executables
version: 16.3.0.0.1.1742442376

python 3.10 環境の用意

python 3.13 ではdistutils, bind11 で問題が起こり, ビルドがうまくいかない. そこで python 3.10環境を用意する. pyenv などでインストールする. .zshrc に以下を記述があることを確認.

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"

Pythonは3.10を用意する

$ pyenv install 3.10
$ pyenv local 3.10
$ pyenv versions
  system
* 3.10.17 (set by /Users/path/to/fluid-engine-dev/.python-version)
  3.13.3

which python, which python3 などとして, インストールしたpythonが参照されていることを確認せよ.

必要なPythonパッケージ: setuptools, pybind11 を用意する.

pip list
pip install setuptools
pip install pybind11
pip list
Package    Version
---------- -------
pip        25.1.1
pybind11   2.13.6
setuptools 65.5.0

ビルド

buildディレクトリに ssize_t のラッパー ssize_t_wrapper.h を用意する.

$ cat ssize_t_wrapper.h 
#pragma once
#include <sys/types.h>

cmake でビルドする.

cmake .. -DPYTHON_EXECUTABLE=$(which python3) \
-DCMAKE_CXX_FLAGS="$CMAKE_CXX_FLAGS -Wno-error=unused-but-set-variable \
-Wno-error=alias-template-in-declaration-name \
-include /full/path/to/ssize_t_wrapper.h"
ビルドの確認

build以下に bin/ などができる.

$ ls bin/

hello_fluid_sim* manual_tests* particles2obj* smoke_sim* sph_sim*
hybrid_liquid_sim* mem_perf_tests* particles2xml* time_perf_tests*
level_set_liquid_sim* obj2sdf* sandbox* unit_tests*

(※ unit_tests は2つ失敗した. doubleの精度に由来するものと思われる)

References

0 件のコメント:

コメントを投稿

何かありましたら、どうぞ: