基本的には fluid-engine-dev.git
の INSTALL.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の精度に由来するものと思われる)
0 件のコメント:
コメントを投稿
何かありましたら、どうぞ: