プログラミング初心者の理系大学院生が大量のエラーに苦戦しながらGeant4(ver 11.2.2)をMacに入れてビルドするまでをまとめました。Macユーザーは特にHomebrewを用いて色々インストールする人が多いと思うのですが、現時点ではそれだけでは全くうまくいかないので、それも含めて書いていこうと思います。
1. Homebrewのインストール
Geant4を使うためには、Geant4以外にもさまざまなライブラリを導入しないといけません。毎回それぞれのサイトに飛んで、インストーラーをとってきてビルドするのはあまりに手間なのでHomebrewを使いましょう。これは欲しいライブラリを指定すると勝手にインストールからビルド、果てはPATHの設定まで全部やってくれる優れものです。
ただ新しいものしか入れないので後々説明するエラーが出るのは全部こいつのせいで起こります
Homebrewのインストールは簡単で、シェルスクリプトを開き
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
を実行するだけです。
また、Homebrew自身のpathを登録しておきましょう。
echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
2. ライブラリのインストール
必要なライブラリは
- cmake
- gcc
- qt5(Geant4では最新のqt6は非対応)
- xerces-c
- ROOT
になります。これをHomebrewでインストールします
注意
Qtだけはエラーの原因なので、別でインストールします。
brew install cmake gcc xerces-c root
Qtですが、2024/10/30現在、Homebrewで
brew install qt@5
を実行すると、Qt5(ver5.15.15)がインストールされます。ところが、このバージョンだとGeant4には新しすぎてうまく回りません。従って、別の手段を用いて古いQt5をインストールします。
エラーなくコマンド入力に戻って来られたら次に進みましょう。
3. Command Line Toolsのインストール
Geant4はC++のtoolkitとして作成されています。Macに限らず、PCがC++を扱うために、特にコンパイルやビルドを行うためにはコンパイラ等が必要です。Mac向けにこれらをまとめたのがCommand Line Tools for Xcodeです。既にROOTを入れた人はご存知と思います。
最新バージョンをインストールするときは
xcode-select --install
と入力するだけで完了です。
が!これらの最新バージョンは往々にしてROOTやGeant4には対応していないものです。そこで、Apple Developperの公式ページから古い版をインストールします。
私の環境ではCLT ver15.3を入れてうまくいきました。
4. (補足)Qt5のインストール
Geant4を実行する際、検出器群や粒子を可視化しながら処理を行うモードにできるのですが、そこでのビジュアル周りの処理を担当するライブラリがQtになります。これを入れないと検出機の配置が正しいかもわからないし、粒子の飛跡をその場で追うこともできません。
古いバージョンのQtをダウンロードする方法はいろんな方があれこれ紹介しているのですが、結局公式をあたるのが一番早いです
注意
Qt online installerはEducational Licenceの登録が必要です。
https://www.qt.io/qt-educational-license
ライセンスの登録が終わったら、下記のサイトからオンラインインストーラーをダウンロードします。
ダウンロードが完了したらインストーラを起動し、指示通り進めてください。
ここはどっちでもいいです。自分の情報あんまり見られたくないなーって人はDisableにするといいと思います。
ここでQtをインストールしたいディレクトリを選んでください。ぶっちゃけどこでもいいですが、pathを忘れないような場所、かつうっかり消したりしないようなところだといいですね。"Custom Installation"を選択したまま次へ進みます。
ここ大事です。ここではQtのどの製品をインストールするか選べるのですが、今欲しい旧版のQtは セキュリティの都合でこの画面には載っていません。 とはいえ欲しい人の気持ちもわかってくれていて、"Archive"を選択して再度フィルターをかけると
"Qt"欄の一番下に出てきます。こいつを選択して、あとは誘導通りに進めれば完了です。
5. Geant4のインストール
ここまででGeant4のための環境整備が完了しました。ここからは実際にGeant4をインストールします。
やり方は大きく分けて2つあり、
-
git clone
を用いる -
curl
等を用いて直接ダウンロード
があります。どちらでも構いませんがここでは後者の方で話を進めていきます。
ますはDownloadディレクトリに移動し、そこに最新版のGeant4のソースファイルをインストールします。
cd ~/Downloads
curl -O https://cern.ch/geant4-data/releases/geant4.11.2.2.tar.gz
tar -xzvf geant4.11.2.2.tar.gz
公式ページから直接ダウンロード、解凍するのもいいと思います。
解凍が完了したら、Geant4のビルド先を作っておきます。
mkdir ~/geant4-build
cd ~/geant4-build
6. Geant4のビルド
ここから実際にインストールしたgeant4をビルドしていきます。ビルドに使うのは先ほどインストールしたcmakeです。
ビルド先のディレクトリに入り、以下のコマンドを実行します。
cmake -DCMAKE_PREFIX_PATH=~/Qt/5.15.9/macos \ #Qtのqmakeがある場所
-DGEANT4_USE_QT=ON \
-DGEANT4_BUILD_MULTITHREADED=ON \
-DGEANT4_INSTALL_DATA=ON \
-DCMAKE_INSTALL_PREFIX=~/geant4-install \
~/geant4 #展開したソースファイルの場所
色々追加のオプションをかけていますが、「可視化もマルチスレッド処理もできるようなgeant4を作ってね!」というわけです。
注意
QtにはQt/(ver)/clang_64というディレクトリにもqmakeが存在しますが、こちらはIntel製CPU向け(x86_64)で書かれているので、Apple Mチップ(arm64)には向きません。CMAKE_PREFIX_PATHには必ずmacosの方を選びましょう。
特にエラーなく作業が完了したら、いよいよビルドします。
make -j$(sysctl -n hw.ncpu) #ビルドに全スレッドを使う
このビルドにはかなり時間がかかります(10~20分くらい)。特にエラーなく完了したら、最後
make install
をしてgeant4の基本設定は完了です!
最後に、Geant4の場所をpathに追加して
echo "source ~/geant4-install/bin/geant4.sh" >> ~/.zshrc
source ~/.zshrc
を行えばGeant4が使えるようになります。
実際にビルドがうまくいっているかを確認するために、デフォルトで入っている例題ファイルをビルドしてみれるかどうかみてみましょう。
mkdir ~/geant4-example
cd ~/geant4-example
cp -r ~/geant4-install/share/Geant4-11.2.2/examples/basic/B1 .
cd B1
mkdir build
cd build
cmake ..
make -j$(sysctl -n hw.ncpu)
./exampleB1
これでうまくいけば謎の3D画面が出てきて、ものが置かれている様子がわかるはずです。
ここまでくれば完成です。
Appendix 1. Qt周りのエラー
最初はROOTのTFileとGeant4でメモリ管理周りの連携がうまくいかなくて色々ライブラリを消したりもう一回入れたりしながら様子を見ていたのですが、brew upgrade
した後のGeant4本体のビルドで
n file included from /Users/(username)/geant4/source/visualization/ToolsSG/src/G4ToolsSGQtGLESViewer.cc:28:
/Users/(username)/geant4-build/source/G4ToolsSG_autogen/include/moc_G4ToolsSGQtGLESViewer.cpp:16:2: error: "This file was generated using the moc from 5.15.15. It"
16 | #error "This file was generated using the moc from 5.15.15. It"
| ^
/Users/(username)/geant4-build/source/G4ToolsSG_autogen/include/moc_G4ToolsSGQtGLESViewer.cpp:17:2: error: "cannot be used with the include files from this version of Qt."
17 | #error "cannot be used with the include files from this version of Qt."
| ^
/Users/(username)/geant4-build/source/G4ToolsSG_autogen/include/moc_G4ToolsSGQtGLESViewer.cpp:18:2: error: "(The moc has changed too much.)"
18 | #error "(The moc has changed too much.)"
| ^
どうやらここで書かれている"moc"ファイルがGeantで対応できないほど色々変わってしまったのでこのままだとビルドできないよ、という警告でした。