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 を書き換えます。
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%
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のインストール手順を踏めば、すぐに使い始めることができます。試しにページをめくって、本書のサンプルをいくつかコンパイルして確認してみてください。 ただし、
の二つの節のサンプルについては、ビルド時にプロジェクトの設定で明示的にライブラリファイルをリンクする必要があります。本書のリファレンス部に
必要なライブラリファイル | 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)