Boost C++ Library プログラミング

Microsoft Visual C++ Toolkit 2003 への Boost のインストール

2004年4月、Microsoft社から Visual C++ Toolkit 2003 という名前で C++ コンパイラが無償公開されました。 このコンパイラで Boost を使う方法について記述します。 このコンパイラは Microsoft Visual C++ .NET 2003 Professional のものと全く同一なため、Boostの対応度については、.NET 2003 と同等です。

共通の手順

まず、本書18ページまでの記載に従って、Boostとbjamをダウンロード、 展開しておいてください。以下では、Boost を c:\Develop\boost に展開したものと想定して説明しています。適宜読み替えてください。

ビルドの前に

Toolkit 2003 には Windows 特有のヘッダファイルやライブラリファイルが含まれていないため、 filesystem, thread などのBoostのライブラリは、 このままではビルドに失敗します。これらを使うためには、 先に Platform SDK をインストールし、適切に設定しておく必要があります。

ビルド

まず、スタートメニューの [Microsoft Visual C++ Toolkit 2003] → [Visual C++ Toolkit 2003 Command Prompt] でコマンドプロンプトを開きます。 次のように打ち込んで、Boostのあるディレクトリへ移動します。

> cd c:\Develop\boost

次に、Boost.Pythonを使いたい場合は、 次のようにPythonに関する環境変数を設定します。 (Pythonを使わない場合はこの2行は省略して構いません)

> set PYTHON_ROOT=C:\Develop\python
> set PYTHON_VERSION=2.3

そして、ビルドを開始します。-sVC71_ROOT と --prefix には、 Visual C++ Toolkit 2003 のインストールディレクトリを指定します。

> bjam -sTOOLS=vc7.1 -sVC71_ROOT="C:\Program Files\Microsoft Visual C++
 Toolkit 2003" --prefix="C:\Program Files\Microsoft Visual C++ Toolkit
 2003" install

かなり時間のかかる作業ですが、あとは、 ゆっくり待っていればそのうちビルド・インストールが終わります。

※ 「VCVARS32.BAT … 認識されていません」というメッセージが何度もでますが、 無視して構いません。(.NET 2003 と Toolkit 2003 で vcvars32.bat の位置や内容が異なっていることが原因ですが、先に vcvars32 は実行済みなので問題ありません。)

パスの通し方

デフォルトでは "C:\Program Files\Microsoft Visual C++ Toolkit 2003" ディレクトリ内に存在する vcvars32.bat を書き換えます。

before

Set PATH=C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin;%PATH%
Set INCLUDE=C:\Program Files\Microsoft Visual C++ Toolkit 2003\include;%INCLUDE%
Set LIB=C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib;%LIB%

after

Set PATH=C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin;%PATH%
Set INCLUDE=C:\Program Files\Microsoft Visual C++ Toolkit 2003\include\boost-1_31;C:\Program Files\Microsoft Visual C++ Toolkit 2003\include;%INCLUDE%
Set LIB=C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib;%LIB%

以上で、インストール作業は完了です。

Boostの使い方

以上のBoostのインストール手順を踏めば、すぐに使い始めることができます。試しにページをめくって、本書のサンプルをいくつかコンパイルして確認してみてください。 ただし、

の二つの節のサンプルについては、ビルド時にプロジェクトの設定で明示的にライブラリファイルをリンクする必要があります。本書のリファレンス部に

必要なライブラリファイルlibboost_unit_test_framework

とあれば、実際にリンクする必要のあるライブラリファイルの名前は

libboost_unit_test_framework-vc71-オプション.lib

です。オプションの部分は、s、sgd、mt、mt-s、mt-gd、mt-sgdのいずれかです。プログラムのコンパイルオプションに応じて変更します。意味は次の通りです。

sランタイムライブラリへ静的リンク
mtマルチスレッド版
gdデバッグ版

例えばマルチスレッド版のunit_testライブラリをリンクするならば、 cl コマンドによってコンパイルする際に、 次のように追加のライブラリファイル名を指定します。

> cl TestHoge.cpp libboost_unit_test_framework-vc71-mt.lib

unit_test、python以外のビルドが必要であったライブラリ(regex、thread、filesystemなど)は、Boostのヘッダ側で自動リンク設定がなされています。これらは、ヘッダを#includeすると自動でリンクの設定が行われるため、ユーザがリンクするファイル名を指定する必要はありません。将来的には残る二つのライブラリにも自動リンク設定が実装されるものと思われます。

presented by k.inaba (kiki .a.t. kmonos.net)