boostライブラリのビルド

Date: 2002/Dec/31
Keyword: Programming boost C++ Libraries Build thread regex

boostライブラリのビルド

ここでも何度か取り上げたC++を強化するクラスライブラリboost、 そのほとんどはテンプレートになっていてヘッダをインクルードするだけで使えるのですが、 threadRegExなどを含む一部の機能はライブラリファイルをリンクする必要があります。 しかも、ちょうどおいしいところに限ってこうなんですよね。

ビルドは、boostのルートディレクトリでbjamというツール(makeに取って代わる、と解説してる)を使い、

bjam "-sTOOLS=msvc"
(Visual C++ 6.0までの場合。Visual C++ .NET(7.0)はvc7という値を使うらしい)
あるいは、
bjam "-sTOOLS=borland"
(Borland Compilerの場合。C++Builderでもフリー版でも)
などとやるだけなのですが、 Visual C++のほうがうまくいかなかったので、その対策についてのメモ。

bjamの入手

boost.orgやオフラインドキュメントのこの辺には、 bjamのプリビルド版、すなわちビルド済みのものがあるとのことなんですが(だよね?^^ゞ)、 ダウンロードしてもzipファイルが何故か開けず。PKヘッダはついてるけどZIPであることを認識できません。
(LhMelt 1.23.0.2 + Unzip32.dll 5.40)

で、結局ビルドしました。が、簡単。

C:\boost>cd tools\build\jam_src
C:\boost\tools\build\jam_src>build.bat
で、作ってくれます。
使えるコンパイラも自動検索してくれるので、たいそうありがたいことになってます。
私の場合はVisual C++が使われているみたいでした。Borland Compilerでも調べてくれます(C++Builderはダメみたい)。 ただし、デフォルトのインストールディレクトリに入れた場合しか自動検索では引っかからないのは当然です。

そしてビルド

で、できあがったbjam(boost\tools\build\jam_src\bin.ntx86というディレクトリにできる)を、 boostのルートにコピーして、今度はライブラリファイルのビルドです。

C:\boost\tools\build\jam_src>copy bin.ntx86\bjam.exe ..\..\..\
C:\boost\tools\build\jam_src>cd ..\..\..\
C:\boost>bjam "-sTOOLS=msvc"

しかし、なぜかビルドできません。

今回もビルド設定を自動的に調べてくれるのですが、 デフォルトでVisual C++をインストールした場合の設定になっているのです。
Visual Studioをインストールした場合はディレクトリ構成が異なるのでこのままいかなかったという寸法です。

ここの注意に従って、 環境変数MSVCDirC:\Program Files\Microsoft Visual Studio\VC98という値で作ってやって、 無事成功しました。

ちなみにBorland Compiler 5.5.1でもビルドしてみました。
Visual C++の時のような注意点は無かったんですが(私はパスも通しているからかな?)、

エラー E2489 boost/mpl/size_t_c.hpp 35: オプションコンテキスト応答深度の上限を超過: 再帰をチェックしてください
のようなエラーが出て一部のライブラリ(signalsなるもの)がビルドできませんでした。
エラーの雰囲気からして、コンパイラの限界を超えたみたいですね。boost恐るべし。

今日の参考サイト

Boost C++ Libraries
boostのサポートサイトです。
Let's boost
kMonos.NET内のboost解説ページです。
サンプル付きの解説がとってもわかりやすいです。