ビルド構成したい(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

/usr/local/

$HOME/geant4/バージョン番号/install

Geant4をインストールするパス

CMAKE_PREFIX_PATH

$(brew --prefix qt@5)

Geant4のビルドに必要な外部パッケージのパス。;(セミコロン)で複数のパスを指定できる

CMAKE_INSTALL_BINDIR

bin

実行ファイルがインストールされるパス

CMAKE_INSTALL_INCLUDEDIR

include

ヘッダーファイルがインストールされるパス

CMAKE_INSTALL_LIBDIR

lib(+?SUFFIX))

ライブラリがルがインストールされるパス

CMAKE_INSTALL_DATAROOTDIRR

share

読み取り専用のデータセットがルがインストールされるパス

GEANT4_INSTALL_DATA

ON

ON

インストール時にGeant4のデータセットのダウンロードを有効にするフラグ

GEANT4_INSTALL_DATADIR

CMAKE_INSTALL_DATAROOTDIR

データセットをインストールするパス

GEANT4_INSTALL_EXAMPLES

ON

サンプルプロジェクトを有効にするフラグ

GEANT4_INSTALL_PACKAGE_CACHE

ON

サンプルプロジェクトを有効にするフラグ

GEANT4_USE_SYSTEM_CLHEP

OFF

OFF

システムのCLHEPライブラリを有効にするフラグ。RayTracerを有効にするフラグ。最近のGeant4はCLHEP同梱なのでOFFでOK

GEANT4_USE_SYSTEM_EXPAT

ON

システムのExpatを有効にするフラグ。

GEANT4_USE_SYSTEM_ZLIB

OFF

システムのzlibを有効にするフラグ。

GEANT4_USE_GDML

OFF

GDMLを有効にするフラグ

GEANT4_USE_INVENTOR_QT

OFF

OpenInventorQtを有効にするフラグ

GEANT4_USE_OPENGL_X11

OFF

ON

X11(XQuartz) OpenGLを有効にするフラグ

GEANT4_USE_QT

OFF

ON

Qt5を有効にするフラグ

GEANT4_USE_QT6

OFF

Qt6を有効にするフラグ

GEANT4_USE_RAYTRACER_X11

OFF

RayTracerを有効にするフラグ

GEANT4_USE_VTK

OFF

VTKを有効にするフラグ。

GEANT4_USE_XM

OFF

Motifを有効にするフラグ。

GEANT4_USE_SMARTSTACK

OFF

G4SmartStackを有効にするフラグ。

GEANT4_USE_FREETYPE

OFF

Freetypeフォントを有効にするフラグ。

GEANT4_USE_HDF5

OFF

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が生成されました。 このようなディレクトリ構成になっていたら、次に進んでください。