3D Slicerのビルド (Linux版)

2022.3.29

OS: Ubuntu 20.04

3D Slicer: Preview Release 4.13.0 revision 30742 built 2022-3-27

3D SlicerはOpen Sourceなソフトです. そのためソースコードが公開されています. ソースコードをもとに改変することも可能です. ビルドの情報は以外にたどり着きにくいところに置いてあったりします. もちろん英語で, ある程度プログラミングに慣れていないと理解できない記載も多いです.

はじめに注意事項

今回の記事では, 基本的には3DSlicerのDocumentationにあるDeveloper GuideのBuild Instractionsに書かれている内容を少しわかりやすく情報を追加して記載しています.

この記事の対象はLinux版です. (そのうち別記事でWindows版も載せたいと思います.)

ソースコードの取り寄せやすさから, バージョンは4.13 preview版としています(現在Release版は4.11). Preview版のため, 日々バグフィックスされて更新されていきます. 記事で対象としたソースコードは「3D Slicer: Preview Release 4.13.0 revision 30742 built 2022-3-27」ですが, 更新されるとrevision番号やbuiltの日付が変わって行きます. ビルドがうまく行かない場合は, revisionが上がるのを待つのも手かと思います.

Linux版の要件

まずはLinux版をビルドする場合, OSから注意が必要です. UbuntuなどDebian系のLinuxであれば一番問題が少ないと思います. その他に必要なソフトやライブラリがあったりします. Build instractionsに記載されている内容が下になります.

  • Git and Subversion for fetching the code and version control.
  • GNU Compiler Collection (GCC) for code compilation.
  • CMake
  • GNU Make
  • GNU Patch
  • Qt5 ver. 5.15.2
    • Multimedia
    • UiTools
    • XMLPatterns
    • SVG
    • WebEngine
    • Script
    • X11Extras
    • Private
  • libXt

この中で意識しないといけないのはおそらくGit, CMake, Qt5 くらいかと思います. Ubuntu20.04で他のソフトやライブラリを入れた覚えはありません(デフォルトで入っている)

Qt5ですが, Ubuntuのフレーバーによっては入っていないことがあります. Synapticsなどアプリをインストールするソフトで確認してみてください. その際, バージョンも確認することをお忘れなく. Ubuntu20.04は特に問題にはなりませんでしたが, あまり古いもの, 新しすぎるものもまたエラーになる可能性があります.

CMakeはコンパイルのための昔で言うMakefileを作ってくれるソフトになります. これもバージョンによってうまく行かない場合もあったりしますので, バージョンの確認をしておく必要があると思います. 最新リリース版は現時点3.22.3, RC版が3.23.0-rc5となっています. SynapticsやaptでインストールできるCMakeがあればそれで十分かと思いますが, 気になるもしくは問題がああった場合などから3.22.3を使ってはと思います. またコマンドライン版(cmake)とGUI版(cmake-gui)がありますが好きな方を使えばいいと思います.

Gitは, ここでの使い方はソースコードを取り寄せるソフトとなります. 正確にはバージョン管理ソフトですが, 今はソースコードを取り寄せる以外には使わないのでこう思っていても構いません. Gitはビルドにあまり関わりませんので, バージョンを気にする必要はないかと思います.

その他のソフトに関しても基本的にバージョンは把握しておいたほうが問題があった場合の解決の糸口になったりします.

ソースコードの取り寄せ (Gitの使用)

ソースコードはGithub.comで公開されています. 通常のファイルのようにダウンロードすることも可能ですが, ここは3D SlicerのガイドにそってGitで取り寄せます.

初めてGitを使う人はレポジトリを作成する必要があります.適当なところにディレクトリ(フォルダ)を作り, そこをローカルリポジトリにすればいいと思います. 私の場合はホームディレクトリに「repos」とディレクトリを作りました. そのディレクトリをGitで初期化します. 具体的な作業はターミナル(端末ソフト, WindowsでいうPowerShell)で行います. ターミナルを立ち上げてプロンプト(下では#マーク)に以下のコマンドを入力します. (1行1行実行します. そのため1行入力したらEnterキーを押してください)

# cd
# mkdir repos
# cd ./repos
# git init

1行目のcdは念の為です. ホームディレクトリなどレポジトリとなるディレクトリを作りたいディレクトリにいれば必要ありません. ホームディレクトリの下にreposディレクトリを作る予定でしたので, ホームディレクトリに戻るコマンドになります.

2行目でディレクトリ作成と3行目でそのディレクトリに入って, git initでレポジトリを初期化しています.

次にreposの下に3D Slicerのソースコードを取り寄せます. 上記処理した後, 以下のコマンドを入力してください.

# git clone https://github.com/Slicer/Slicer.git

これで逐次処理工程が表示され終われば, 「Slicer」というディレクトリが出来ており, その中に更に「Slicer」というディレクトリがありそこにソースコードがクローン(ダウンロード)されているはずです.

SlicerのBuild Instractionsではソースコードのクローン後, したのようにSetupForDevelopment.shを実行するようにありますが, 私の場合はこのような記載があることを気がついていなかったため, 無視して以下を実施しましたが, 特に問題はなかったです. 内容をざっとみるかぎり, Githubのユーザー設定等のようですので, 今回の処理にはあまり影響しないかと思います.

# cd Slicer/Slicer
#./Utilities/SetupForDevelopment.sh

ビルド環境の構築と設定(CMake)

ビルドは直接ソースコードをクローンしたディレクトリで行うのではなく, ビルド用のディレクトリを作りそこでビルドしていきます. ここでは, そのディレクトリをslicer413_buildとします. 下のようにディレクトリを作り, その中に入ります.

# mkdir ./Slicer/slicer413_build
# cd ./Slicer/slicer413_build

現状下のようなディレクトリの構造になっていると思います.

[ホーム]— repos–+– Slicer –+– Slicer –+– (ソースコードのディレクトリ群)
|
+– slicer413_build

現在, 空っぽのslicer-bディレクトリにいる(処理対象になっている)と思います. ここでCMakeを使って必要なソースコードの取り寄せや, ビルドの環境確認, 設定を行います.

ここからCMakeを使いますが, わかりやすいようにGUI版を使います. デスクトップのメニュー等からcmakeを選ぶか, ターミナルでcmake-guiを起動してください. ターミナルでは下のように入力します.

# cmake-gui

CMakeとソフト名を書いていますが, 実行ファイルは小文字ですし, Windowsとはことなり大文字小文字は区別されますので間違わず小文字で入力してください.

起動したら下のようなウィンドウが現れると思います. ここでまず指定するのが赤丸で印をつけた2つの項目です. 上がソースコードのあり場所, 下がビルドのためのディレクトリの場所を指定します. それぞれ右の「browse」ボタンから選択すればいいと思います. 下の例では, ともに /home/at/repos/… から始めっていますが, 自身の環境にわせて変更してください. これまでの説明の通りに実施してきたのであれば, repos/ から下は同じになっていると思います.

cmake-gui

ディレクトリ設定できれば, とりあえず左下の「Configure」ボタンを押します. すると下図のようにmakeファイルの形式を聞いてくるのですが, ubuntu(たいがいのlinux)であればそのまま(Unix Makefilkeのまま)「Finish」ボタンを押せば構いません.

「Finish」ボタンを押すと, 「Configure」ボタンの下のメッセージボックスに処理の状況が流れて最終的には下のように真っ赤になって終わると思います.

cmake-guiでは, 自動で設定した設定項目や何らかエラーがある項目が赤くなります. 自動設定された内容は問題ない場合がほとんどですので, 再度「Configure」ボタンを押せば白背景になります.

ここで赤背景の設定項目が残っている, もしくは下のメッセージボックスに赤字でエラーが出ている場合はエラーのある設定項目を修正するもしくは設定項目を追加するなど対処してください. そのような場合の多くが設定項目の名前になっているライブラリが無い(見つけられない)などですので, 手動で入力するか本当に無いのであればインストールするなりすることになります.

下のようにメッセージボックスに「Configuring done」と出ていればOKです. ただし, まだこの段階では環境設定は終わっていません.

ついで, 「Generate」ボタンを押して完了になります. 「Generate」ボタンを押すことで, Makefileが書き出され, ビルドのための環境が保存されます. 見にくいですが「Generate」ボタンを押した後にGenerating doneと出れば終わりです. cmake-guiのウィンドウを閉じても構いません.

これでslicer413_buildの中に多数のディレクトリやファイルが出来ていると思います.

Slicerのビルド

あとはビルドするだけになります. ビルドはmake一発です.

gitでクローンしたターミナルでも, cmake-guiを立ち上げたターミナルでも構いませんので, ビルドのためのディレクトリに移動してmakeを実行します.

# cd ~/repos/Slicer/slicer413_build
# make

makeコマンド後は, だいぶ時間がかかります. 私の環境で5, 6時間かかりますので気長に待ちましょう.

ビルド中にエラーがでたら, 基本的には何らか設定がおかしいことが考えられますので, cmakeから確認することになります.

無事終了したら, slicer413-buildの中のSlicer-buildの中に「Slicer」という実行可能ファイルが出来ていると思います. それを起動してうまく動くか確認してみてください.

リリース版へ

この記事のままビルドしたのなら, ビルドはデバッグバージョンでビルドされています. ビルドが問題なく終了し, 出来上がった3DSlicerも問題なく起動・ 処理を実施できることが確認できたらリリース版で再ビルドする必要があります. デバッグ版でも動きますが, 実行ファイルの容量が大きかったり目盛などリソースを無駄に費やしたりします.

リリース版にするためには一旦cmake-guiでの設定に戻りますのでcmake-guiを再度起動してください.

cmake-guiの設定画面で, 上部にある「Advanced」にチェックを入れてください. そうすると設定項目が増えたと思います. その中から「CMAKE_BUILD_TYPE」という設定項目を探してください (Advancedよこの検索で探しても可). 現在その項目に「Debug」が指定されていると思いますが, そこを「Release」に変更してください.

「CMAKE_BUILD_TYPE」を変更したら, 再度「Configure」ボタン→「Generate」ボタンを押して再度makeしてください.

makeが無事終われば同様に「Slicer」の実行ファイルがリリース版に置き換わっているはずです.

Package化

実際に出来上がった3D Slicerは「Slicer」だけでは実行できません. 必要なライブラリなどがありますが, ビルドしたフォルダ内にどのファイルが実行するためにいるものかよくわからないと思います. パッケージ化してひとまとめにすることで, 好きなところにインストールでき余分なファイルもなく便利になります.

パッケージ化もmakeを使います. ただし, makeを実行するディレクトリが異なりますし, パラメータも指定します.

実行ファイル「Slicer」があるSlicer-buildのディレクトリに移動します. そこでmakeを下のように実行します.

# cd ~/repos/Slicer/Slicer/Slicer-build/
# make package

うまく行くと, Slicer-4.13.0-2022-03-23-linux-amd64.tar.gz など圧縮してひとまとめになったファイルが出来上がります.

インストールするときは, このファイルをインストールしたいディレクトリに解凍すれば終わりです.