ライブラリのビルドとインストール

ライブラリの zip ファイルを解凍するとき、ディレクトリの内部構造を変更しないようにする(例えば -d オプションを付けて解凍する)。もし変更してしまっていたら、この文書を読むのをやめて解凍したファイルをすべて削除して最初からやり直したほうがよい。

本ライブラリを使用する前に設定することは何もない。大抵のコンパイラ、標準ライブラリ、プラットフォームは何もしなくてもサポートされる。設定で何か問題がある場合や、単にあなたのコンパイラで設定をテストしてみたい場合は、やり方は他の Boost ライブラリと同じである。ライブラリの設定ドキュメントを見るとよい。

ライブラリのコードはすべて名前空間 boost 内にある。

他のテンプレートライブラリとは異なり、本ライブラリはテンプレートコード(ヘッダ中)と、静的コード・データ(cpp ファイル中)が混在している。したがってライブラリを使用する前に、ライブラリのサポートコードをビルドしてライブラリかアーカイブファイルを作成する必要がある。これについて各プラットフォームにおける方法を以下に述べる。

bjam を用いたビルド

本ライブラリをビルドおよびインストールする最適な方法である。Getting Started ガイドを参照していただきたい。

Unicode および ICU サポートビルド 1

Boost.Regex は、ICU がコンパイラの検索パスにインストールされているか設定をチェックするようになった。ビルドを始めると次のようなメッセージが現れるはずである:

Performing configuration checks

    - has_icu builds           : yes

これは ICU が見つかり、ライブラリのビルドでサポートされるということを表している。

ちなみに

正規表現ライブラリで ICU を使用したくない場合は --disable-icu コマンドラインオプションを使用してビルドするとよい。

仮に次のような表示が出た場合、

Performing configuration checks

    - has_icu builds           : no

ICU は見つからず、関連するサポートはライブラリのコンパイルに含まれない。これが期待した結果と違うという場合は、ファイル boost-root/bin.v2/config.log の内容を見て、設定チェック時にビルドが吐き出した実際のエラーメッセージを確認すべきである。コンパイラに適切なオプションを渡してエラーを修正する必要があるだろう。例えば、some-include-path をコンパイラのヘッダインクルードパスに追加するには次のようにする。

bjam include=some-include-path --toolset=toolset-name install

あるいは ICU のバイナリが非標準的な名前でビルドされている場合に、ライブラリのリンク時に既定のICUバイナリ名の代わりに linker-options-for-icu を使用するには次のようにする。

bjam -sICU_LINK="linker-options-for-icu" --toolset=toolset-name install

オプション cxxflags=option および linkflags=-option でコンパイラやリンカに固有のオプションを設定する必要があるかもしれない。

重要

設定の結果はキャッシュされる。異なるコンパイラオプションで再ビルドする場合、bjam のコマンドラインに -a を付けるとすべてのターゲットが強制的に再ビルドされる。

ICU がコンパイラのパスに入っておらず、ヘッダ・ライブラリ・バイナリがそれぞれ path-to-icu/includepath-to-icu/libpath-to-icu/bin にあるのであれば、環境変数 ICU_PATH でインストールした ICU のルートディレクトリを指定する必要がある。典型的なのは MSVC でビルドする場合である。例えば ICU を c:\download\icu にインストールした場合は、次のようにする。

bjam -sICU_PATH=c:\download\icu --toolset=toolset-name install

重要

ICU も Boost と同様に C++ ライブラリであり、ICU のコピーが Boost のビルドに使用したものと同じ C++ コンパイラ(およびバージョン)でビルドされていなければならないということに注意していただきたい。そうでない場合 Boost.Regex は正しく動作しない。

結局のところ、複数のコンパイラのバージョンで異なる ICU ビルド使用してビルド・テストするのであれば、設定の段階で ICU が自動的に検出されるよう各ツールセットに適切なコンパイラ・リンカオプションを設定するよう(ICU バイナリが標準的な名前を使っているのであれば、適切なヘッダとリンカの検索パスを追加するだけでよい)user-config.jam を修正するのが現時点で唯一の方法である。

メイクファイルを使ったビルド

Regex ライブラリは「ただのソースファイル群」であり、ビルドに特に必要なことはない。

<boost のパス>/libs/regex/src*.cpp のファイルをライブラリとしてビルドするか、これらのファイルをあなたのプロジェクトに追加するとよい。既定の Boost ビルドでサポートされていない個々のコンパイラオプションを使う必要がある場合に特に有用である。

以下の 2 つの #define を知っておく必要がある。

  • ICU サポートを有効にしてコンパイルする場合は BOOST_HAS_ICU を定義しなければならない。

  • Windows で DLL をビルドする場合は BOOST_REGEX_DYN_LINK を定義しなければならない。

1

訳注 Unicode を用いた正規表現ライブラリは ICU にもあります。Unicode に関する機能は ICU 版のほうが豊富です。