## Hamigaki C++ライブラリのインストール

いくつかのHamigakiライブラリはライブラリのビルドを必要とする。ビルドにはBoost.BuildのVersion 2 (以下、BBv2) を使用する。

### 設定

BBv2の動作には次のいずれかの環境変数(またはbjamの-sオプションによるグローバル変数)を設定する必要がある。

変数 | 意味 | 規定値
--- | --- | ---
BOOST_BUILD_PATH | BBv2のインストールされたディレクトリ | /usr/share/boost-build (UNIXのみ)
BOOST_ROOT | Boost C++ Librariesの配布パッケージの展開されたディレクトリ | -

ただし、Boostのプロジェクトを参照してソースからビルドする場合は必ずBOOST_ROOT変数を設定しなければならない。

また、ビルド済みBoostライブラリを使用する場合は、bjamの環境設定ファイルで次のグローバル変数を定義する。

変数 | 意味 | 規定値
--- | --- | ---
NO_BOOST_STD_LIB_NAME | 真(1)に設定するとBoostのライブラリ名にコンパイラ名とBoostのバージョンを含めない (オプション) | -
NO_DEBUG_BOOST | 真(1)に設定するとリリースビルドのライブラリだけを使う (オプション) | -
BOOST_INCLUDE | Boostのヘッダファイルのあるディレクトリ (必須) | $(BOOST_ROOT)
BOOST_LIBPATH | Boostのライブラリファイルのあるディレクトリ (必須) | -

NO_BOOST_STD_LIB_NAMEは、Boostを--layout=systemオプションでインストールした場合、1に設定する。

NO_DEBUG_BOOSTは一部のパッケージシステムにおいて有用であるが、ABIの不一致や単一定義規則(ODR)の違反となるかもしれない。

ライブラリ固有の変数に関しては、各ライブラリのドキュメントを参照すること。

### ビルド

実際にビルドするにはHamigakiライブラリのルートディレクトリ(以下、HAMIGAKI_ROOT)でbjamを実行する。bjamに指定するオプションはBoostをビルドする場合と同じである。

`bjam` [`options`] [ install | stage ]

installコマンドはライブラリをビルドし、ヘッダファイルとライブラリファイルを指定されたディレクトリへコピーする。次表に示すオプションはinstallコマンドでのみ有効である。

オプション | 意味 | 規定値
--- | --- | ---
--prefix=`<PREFIX>` | インストール先ディレクトリ | C:\Hamigaki (Windows)、/usr/local (UNIX)
--lib-dir=`<DIR>` | ライブラリファイルのインストール先ディレクトリ | `<PREFIX>`/lib
--includedir=`<HDRDIR>` | ヘッダファイルのインストール先ディレクトリ | `<PREFIX>`/include

stageコマンドはライブラリをビルドし、ライブラリファイルを指定されたディレクトリへコピーする。次表に示すオプションはstageコマンドでのみ有効である。

オプション | 意味 | 規定値
--- | --- | ---
--stagedir=`<STAGEDIR>` | ライブラリファイルのインストール先ディレクトリ | ./stage

その他のオプションはコマンドに依存しない。

オプション | 意味 | 規定値
--- | --- | ---
--build-type=`<type>` | minimalならリリースバージョンのみビルドする。completeなら全てビルドする。 | minimal
--builddir=`DIR` | ビルドに使用するディレクトリ | $(HAMIGAKI_ROOT)/bin.v2
--toolset=`<ツールセット名>` | ビルドに使用するツールセットの名前 | msvc (Windows)、gcc (UNIX)
--show-libraries | ビルドの必要なライブラリの一覧を表示し、終了する。 | -
--layout=`<layout>` | ライブラリの名前とヘッダファイルの位置を選択する。versionedならばライブラリの名前とヘッダファイルのインストールディレクトリにHamigakiライブラリのバージョン番号が付加される。systemならばバージョン番号は付加されない。 | versioned
--buildid=`ID` | ライブラリ名に`ID`を付加する | -
--help | ヘルプを表示して、終了する。 | -
--with-`<library>` | `<library>`だけビルドする。複数指定可。 | -
--without-`<library>` | `<library>`をビルドしない。複数指定可。 | -