ビルド構成したい(cmake
)
// オプションを指定してcmakeする
$ cd ~/geant4/v11.2.1
(~/geant4/v11.2.1/) $ cmake \
-G "Unix Makefiles" \
-S source \
-B build \
-DCMAKE_INSTALL_PREFIX=install \
-DCMAKE_PREFIX_PATH=$(brew --prefix qt@5) \
-DGEANT4_INSTALL_DATA=ON \
-DGEANT4_USE_OPENGL_X11=ON \
-DGEANT4_USE_QT=ON
cmake
を使ってビルドに必要なファイルを生成します。
Geant4のビルドオプションは
-Dオプション名=設定値
で変更できます。
(~/geant4/v11.2.1/) $ less build/CMakeCache.txt
cmake
を実行すると、ビルド用ディレクトリにCMakeCache.txt
が生成されます。
このファイルを確認して、オプションが設定できているか確認できます。
ビルドツールを設定する(-G
)
$ cmake -G "Unix Makefiles"
$ cmake -G "Ninja"
-G
オプションでジェネレーター(=ビルドツール)を変更できます。
多くの場合、デフォルトはmake
(=Unix Makefiles
)です。
インストール先を設定する(-DCMAKE_INSTALL_PREFIX
)
// 絶対パスで指定
$ cmake -DCMAKE_INSTALL_PREFIX=$HOME/geant4/v11.2.1/install
// 相対パスで指定
$ cmake -DCMAKE_INSTALL_PREFIX=install
CMAKE_INSTALL_PREFIX
オプションで、Geant4本体のインストール先のパスを変更できます。
絶対パス、もしくはcmake
を実行したパスからの相対パスを指定できます。
ライブラリを追加する(-DCMAKE_PREFIX_PATH
)
// macOSの設定
$ cmake -DCMAKE_PREFIX_PATH=/opt/homebrew/opt/qt@5
// 汎用的な設定
$ cmake -DCMAKE_PREFIX_PATH=$(brew --prefix qt@5)
CMAKE_PREFIX_PATH
で、ビルドに必要なライブラリのパスを追加できます。
Qtを使う場合、ローカルにインストールされているQtのパスを指定する必要があります。
注釈
HomebrewでインストールしたQtのパスは、プラットフォームによって違うことがあります。
/opt/homebrew/opt/qt@5
のようなベタ書きではなく、
brew --prefix qt@5
で取得するほうが汎用的です。
// macOS (x86_64)
$ brew --prefix qt@5
/usr/local/qt@5
// macOS (M2 Apple)
$ brew --prefix qt@5
/opt/homebrew/opt/qt@5
// WSL2 (Ubuntu)
$ brew --prefix qt@5
/home/linuxbrew/.linuxbrew/opt/qt@5
可視化ドライバーしたい
$ cmake -DGEANT4_USE_QT=ON -DGEANT4_USE_OPENGL_X11=ON
GEANT4_USE_QT=ON
オプションでQtを、
GEANT4_USE_OPENGL_X11=ON
オプションでOpenGLを有効にします。
注釈
QtとOpenGLはそれぞれ役割が異なるため、この2つはセットで有効にする必要があります。 Qtだけだど描画できず、OpenGLだけだと描画はできますが、ウィンドウ/メニューが貧弱になります。
オプションを再利用したい(CMakePresets.json
)
$ cmake \
-S source \
-B build \
--preset=geant4
必要なオプションをCMakePresets.json
にまとめることで、オプション設定を再利用できます。
また、オプション設定時のタイポを防ぐことができます。
{
"name": "geant4",
"displayName": "Geant4 Build",
"description": "Build Geant4 with OpenGL and Qt",
"generator": "Unix Makefiles",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"GEANT4_INSTALL_DATA": "ON",
"GEANT4_USE_OPENGL_X11": "ON",
"GEANT4_USE_QT": "ON"
}
}
ビルドオプションを確認する
Geant4 Build Optionsを参考に、 使いそうなオプションや、知っておくとよさそうなオプション設定のデフォルト値を整理しました。
オプション名 |
デフォルト値 |
推奨値 |
説明 |
---|---|---|---|
CMAKE_INSTALL_PREFIX |
|
|
Geant4をインストールするパス |
CMAKE_PREFIX_PATH |
|
Geant4のビルドに必要な外部パッケージのパス。 |
|
CMAKE_INSTALL_BINDIR |
|
実行ファイルがインストールされるパス |
|
CMAKE_INSTALL_INCLUDEDIR |
|
ヘッダーファイルがインストールされるパス |
|
CMAKE_INSTALL_LIBDIR |
|
ライブラリがルがインストールされるパス |
|
CMAKE_INSTALL_DATAROOTDIRR |
|
読み取り専用のデータセットがルがインストールされるパス |
|
GEANT4_INSTALL_DATA |
|
|
インストール時にGeant4のデータセットのダウンロードを有効にするフラグ |
GEANT4_INSTALL_DATADIR |
|
データセットをインストールするパス |
|
GEANT4_INSTALL_EXAMPLES |
|
サンプルプロジェクトを有効にするフラグ |
|
GEANT4_INSTALL_PACKAGE_CACHE |
|
サンプルプロジェクトを有効にするフラグ |
|
GEANT4_USE_SYSTEM_CLHEP |
|
|
システムのCLHEPライブラリを有効にするフラグ。RayTracerを有効にするフラグ。最近のGeant4はCLHEP同梱なのでOFFでOK |
GEANT4_USE_SYSTEM_EXPAT |
|
システムのExpatを有効にするフラグ。 |
|
GEANT4_USE_SYSTEM_ZLIB |
|
システムのzlibを有効にするフラグ。 |
|
GEANT4_USE_GDML |
|
GDMLを有効にするフラグ |
|
GEANT4_USE_INVENTOR_QT |
|
OpenInventorQtを有効にするフラグ |
|
GEANT4_USE_OPENGL_X11 |
|
|
X11(XQuartz) OpenGLを有効にするフラグ |
GEANT4_USE_QT |
|
|
Qt5を有効にするフラグ |
GEANT4_USE_QT6 |
|
Qt6を有効にするフラグ |
|
GEANT4_USE_RAYTRACER_X11 |
|
RayTracerを有効にするフラグ |
|
GEANT4_USE_VTK |
|
VTKを有効にするフラグ。 |
|
GEANT4_USE_XM |
|
Motifを有効にするフラグ。 |
|
GEANT4_USE_SMARTSTACK |
|
G4SmartStackを有効にするフラグ。 |
|
GEANT4_USE_FREETYPE |
|
Freetypeフォントを有効にするフラグ。 |
|
GEANT4_USE_HDF5 |
|
HDF5形式を有効にするフラグ。 |
ディレクトリ構成
$ tree ~/geant4/v11.2.1 -L 2
geant4/v11.2.1
├── build
│ ├── BuildProducts
│ ├── CMakeCPackOptions.cmake
│ ├── CMakeCache.txt
│ ├── CMakeFiles
│ ├── CPackConfig.cmake
│ ├── CPackSourceConfig.cmake
│ ├── Externals
│ ├── G4EXPATShim.cmake
│ ├── G4FreetypeShim.cmake
│ ├── G4HDF5Shim.cmake
│ ├── G4ModuleAdjacencyList.txt
│ ├── G4ModuleInterfaceMap.csv
│ ├── G4MotifShim.cmake
│ ├── G4X11Shim.cmake
│ ├── Geant4Config.cmake
│ ├── Geant4ConfigVersion.cmake
│ ├── Geant4LibraryDepends.cmake
│ ├── Geant4PackageCache.cmake
│ ├── InstallTreeFiles
│ ├── LICENSE.txt
│ ├── Makefile
│ ├── Modules
│ ├── README.txt
│ ├── UseGeant4.cmake
│ ├── UseGeant4_internal.cmake
│ ├── _source_extras
│ ├── cmake_install.cmake
│ ├── cmake_uninstall.cmake
│ ├── cmake_uninstall.cmake.in
│ ├── cxx_filesystem
│ ├── data
│ ├── geant4-config
│ ├── geant4_module_check.py
│ ├── geant4_validate_sources.cmake
│ ├── geant4make.csh
│ ├── geant4make.sh
│ ├── source
│ └── source_package_extras.cmake
├── source
│ ├── CHANGELOG -> ReleaseNotes
│ ├── CITATION.cff
│ ├── CMakeLists.txt
│ ├── CONTRIBUTING.rst
│ ├── LICENSE
│ ├── README.rst
│ ├── ReleaseNotes
│ ├── cmake
│ ├── config
│ ├── environments
│ ├── examples
│ ├── packaging
│ └── source
source/CMakeLists.txt
の内容をもとに、
build/CMakeCache.txt
が生成されました。
このようなディレクトリ構成になっていたら、次に進んでください。