Nazy's Developer's Site - /Home/Boost/ -
  Install & Build : インストールと構築 Last Modified : 2004/05/08 (Sat.)
     

主にWin32向けに書いていますが、そのほかの環境の方でもほぼ同じ手順です。

  1. 入手法
  2. インストール方法
    1. 展開(伸張・解凍)する
    2. インストール
  3. ビルド方法
    1. Boost.Jamをダウンロードする
    2. Boost.Jamの展開
    3. Boost.Jamの使い方
    4. Boost.Jamの変数
    5. BUILDオプション
    6. BUILDオプションの例
  4. Compiler StatusとBoost退行テストについて
  5. 各コンパイラ向けの情報
    1. Microsoft Visual C++
      1. 各バージョン共通
      2. 6.0
      3. 6.0 with STLport
      4. 7.0
    2. Borland C++ Compiler 5.5.1
    3. Metorowerks CodeWarrior 8.3
    4. その他の環境の方
  6. 付録: Boost.Jamのビルド


     
 
1.

入手法

 

Boost C++ Librariesは、ブーストのオフィシャルサイトのダウンロードページ(http://www.boost.org/more/download.html)から、リンクをたどって、SourceForgeのブーストエリア(http://sourceforge.net/project/showfiles.php?group_id=7586)で入手することができます。

圧縮方法の違ういくつかのファイルがありますが、内容は同じですので、あなたが展開(伸張・解凍)できる形式のものをダウンロードしてください。

また、本稿の執筆時点の最新版は、"1.30.2"です。

同時に、ページ最下部にあるBoost.Jamもダウンロードしておいた方がいいでしょう。このBoost.Jamのダウンロードについては、Boost.Jamをダウンロードするを参照ください。


2.

インストール方法

 

i.

展開(伸張・解凍)する

ダウンロードしたパッケージを、展開します。
簡単のため、C:\lib\boost_1_30_2\に展開したと仮定して、話を進めます。
Windows以外の環境の方や、Windowsをお使いでも、別のパスにインストールされたい方は、適宜読み替えてください。
また、'\'はフォルダ(ディレクトリ)の区切りを表します。

展開した時、以下のようなフォルダ(ディレクトリ)構成になっているはずです。

  • C:\lib\boost_1_30_2\
  • boost\ [ヘッダファイル]
  • doc\
  • html\
  • libs\ [各フォルダ以下に、ライブラリのテストコードと、説明]
  • more\ [Boost全般に関する説明]
  • people\ [ブーストの作者など]
  • status\ [コンパイラステータスについて]
  • tools\
  • build\ [boost-jam関連のファイル・フォルダ]
  • inspect\
  • regression\
  • いくつかのファイル
  • ii.

    インストール

    インストールといっても、実は大したことをするわけではなく、単にコンパイラに対してブーストライブラリのパスを通すだけです。

    DateTime・Filesystem・Python・Regex・Signal・Test・Threadsライブラリを使わなければ、通常、単にコンパイラにパスを通せばよく、ビルドステップは必要ありません

    また、追加するパスはブーストの展開フォルダ ..../boost_1_30_2/です。
    なぜなら、通常、ブーストライブラリをインクルードする際には、

    #include <boost/something >

    と記述するからです。

    ほとんどのコンパイラでは、コンパイルオプションに"-Ic:\lib\boost_1_30_2\"を加えるだけで、パスが通ります。
    しかし、永続的ではなく、そのオプションを指定したコンパイル時のみに限ります。
    永続的にインクルードパスを通すたための、各コンパイラ向けの方法については、各コンパイラ向けの情報を参照してください。


    3.

    ビルド方法

     
    i.

    Boost.Jamをダウンロードする

    ここでは、ビルドが必要なライブラリのビルドに関して説明します。
    ※Pythonに関しては、別途Pythonの環境と、特別なオプションが必要となるため、解説しません。また、以下のステップを用いても、Pythonはビルドされません。

    では、ビルド方法について解説します。
    ブーストライブラリでは、Jamと呼ばれる、特別なビルドツールが用意されています。特別といっても、makeの代わりと考えても差し支えありません。

    Boost.JamのバイナリはSourceForge download sectionページの下部にあります。また、各プラットフォーム用のものがありますが、Win32を用いている方は、"bjam-3.1.4-2-ntx86.zip"が最新版となります(2003/09/03現在)。

    まず、これをダウンロードしてください。

    ※注意

    • Windows9x(含むMe)のユーザはbjamがcommand.comで扱えるコマンドラインサイズより長いコマンドラインを生成することがあるので、注意してください。正常にビルドされない可能性があります。
    • Cygwinのユーザはcygwin-gccをコンパイルする場合のみ、Windowx9xの問題は発生しません。ただし、cygwin-gccを使わない場合は、この限りではありません。
    • Unix系のOSをお使いの方にはRPMパッケージもあります

    自分の使用しているプラットフォーム用のバイナリがない場合は、ブーストライブラリのパッケージに含まれる、Boost.Jamのソースファイルをご自分でビルドする必要があります。
    ソースファイルは、C:\lib\boost_1_30_2\tools\build\jam_src\にあります。
    BoostJamのビルドに関しての解説は、Boost.Jamのビルドで行います。

    ii. Boost.Jamの展開

    さて、自分のプラットフォーム用のBoost.Jamをダウンロードできました。
    では次に、ダウンロードしてきたbjam-3.1.4-2-ntx86.zipを適当なフォルダに展開し、中にあるbjam.exeをブーストを展開したフォルダにコピーします。

    iii.

    Boost.Jamの使い方

    Boost.Jamでは、TOOLS変数とBUILD変数および、各コンパイラに依存した変数に適切な値を設定することで、ビルド作業を行います。

    bjamのコマンドラインオプションは以下の通りです。

    usage: jam [ options ] targets...

    表1. bjamのコマンドライン一覧
    オプション 説明
    -a すべての対象をビルドする
    -dx デバッグレベルを x にする x = (0-9)
    -fx Jambaseの代わりに、 x を読む
    -jx シェルコマンド x を同時に実行する
    -n 実際にはアップデート作業を実施しない (動作をシミュレートする)
    -ox

    アップデート作業を x に保存する
    これを、バッチコマンド(Win)またはシェルコマンド(UNIX)として実行すると、ビルドされる
    #複数のマシンで実行するときに便利かもしれない

    -q 対象が失敗すると、すぐに終了する
    -sx=y 変数 xy を設定する。 これは、x が環境変数にあった場合、yが優先される
    -tx x を再ビルドする
    -v このソフトのバージョンを表示して終了する
    --x オプション x を無効にする

    色々とオプションがありますが、実際に使用するのは、"-s"くらいなものです。
    たとえば、

    >bjam "-sTOOLS=msvc"
    (">"はプロンプト)

    とすると、MS Visual C++を用いてビルドされます。ただし、コンパイルオプションはすべてデフォルトとなります。

    iv. Boost.Jamの変数

    Boost.Jamにビルドオプションを設定方法するには、環境変数を設定する必要があります。

    環境変数の設定方法には、2種類あります。

    1. コマンドライン引数に、"-s"を指定し、"-sVARIABLE_NAME=value"としてオプションを設定する。
      環境変数に依らず、 VARIABLE_NAMEvalue になります。
      ただし、コマンドライン引数が長くなり不格好になりますし、1つずつのオプションの変更がしにくいというデメリットがあります。
    2. 環境変数としてVARIABLE_NAME=valueとしてオプションを設定する。
      ただし、こうすると、各設定ごとに記述できるので修正し易くなりますが、環境変数の設定はプラットフォーム(シェル)依存です。
      環境に合わせて、set, export, setenvなどを使って設定してください。

    Boost.Jamの使用する環境変数には

    1. 使用するツールを指定するオプション : TOOLS
    2. ビルド方法を指定するオプション : BUILD
    3. すべてのビルドの結果を出力するディレクトリを指定 : ALL_LOCATE_TARGET
    4. ツールのパスを指定する等、完全にツール依存のオプション

    ・TOOLS

    コンパイラを指定します。サポートされているコンパイラの一覧は、http://www.boost.org/tools/build/index.html#Toolsをご覧ください。
    また、
    TOOLS=msvc gcc borland
    とすれば、MS VisualC++、GNU GCC、 Borland C++ Compiler用にそれぞれコンパイルされます。が、普通必要ないでしょうし、BUILDオプションの指定が面倒になるので奨励しません。
    ※あたりまえですが、スペースで区切るときは、ダブルクォーテーション(")でくくりましょう。以下も同様です。
    例 :
    set TOOLS="msvc gcc borland"
    "-sTOOLS=msvc gcc borland"

    ・BUILD

    どのようなオプションでコンパイルするかを指定します。
    たとえば、
    BUILD=debug release <optimization>speed <runtime-link>static/dynamic
    のようにします。
    詳しくは、BUILDオプションで解説しています。

    ・ALL_LOCATE_TARGET

    ビルド結果の出力先を指定します。
    このオプションが空の場合、 各ライブラリ以下に、binディレクトリが作られ、その中に結果が出力されます。
    また、
    ALL_LOCATE_TARGET=.\bin
    のようにすると、"コマンドを実行したディレクトリ\binディレクトリ"以下に各ライブラリ用ディレクトリが作られ、その中に、オブジェクトファイル・ライブラリファイル・DLLなどが作られます。
    バイナリファイルが一カ所にまとまるので、便利です。

     

    v.

    BUILDオプション

    BUILDオプションは、以下の書式からなります。

    BUILD = { option }.
    option =
    [[<compiler>]<variant>]<feature>value1[[/value2]/value3...] | "debug" | "release".

    ・compiler [省略可能]
    コンパイラの種類を指定します。これは、TOOLSで指定したものと、同じ名前を使います。省略した場合は、<*>と見なされ、すべてのコンパイラにマッチします。

    ・variant [省略可能]
    これは、<debug>か<release>かを選びます、

    feature
    設定する項目を指定します。

    value
    項目に対する、値を指定します。


    featureと、valueの対応表は以下の通りです。
    ※すべてのコンパイラで、以下のfeatureのすべてがサポートされているわけではないことに注意してください。

    表2. 主なfeatureの一覧
    feature value 説明
    runtime-build debug デバッグモードでコンパイルする ※debug, releaseの両方とも省略した場合、debugになる
    release リリースモードでコンパイルする
    また、debugとreleaseでは、いくつかデフォルト値が違うものがあります
    runtime-link dynamic スタティックリンク版を作成する
    static ダイナミックリンク版を作成する(ランタイムが必要になる)
    optimization off 最適化コンパイルをしない [default]
    speed 速度で最適化する
    space サイズで最適化する
    threading single マルチスレッディングを想定したコンパイルをするか、シングルスレッディングを想定したコンパイルをするか選ぶ。
    マルチスレッディングにする可能性があるなら、当然multiを指定
    multi
    rtti on RTTI(実行時型情報)を有効にします
    off RTTIを無効にします
    inlining off インライン展開しません
    on インライン展開をします
    full インライン化できるものは、できるだけインライン化するように指定します
    wide-character-support on ワイドキャラクターコード(2byte)をサポートするかを指定します。
    off
    profiling off プロファイリングの有効・無効を切り替えます
    on
    struct-alignment auto 構造体のアライメントを設定します。
    1/2/4/8/16
    debug-symbols on デバッグシンボルを含めるかどうか指定します。
    デバッグモード時はonでリリースモード時は、offです
    off
    exception-handling on 例外を捕捉するか否かを指定します。offにした場合、try-catch構文が機能しなくなりますので、通常は、onです。
    off
    shared-linkable false  
    true
    define 任意の文字列 追加のマクロ
    例:
    <msvc><*><define>BUILDING_FOO=1
    include インクルードパス 追加のインクルードパス
    例:
    <include>../bazlib/include
    address-model default 生成するコードのアドレッシングモデルを指定します
    現在は、ポインタのビット数に限定されています
    16/32/64
    architecture native CPUのアーキテクチャを設定します
    x86
    sparc
    power
    mips1 ... mips4
    instruction-set default 命令セットを定義します。
    コンパイラが対応していれば、定義した命令セット用にビルドされます
    設定値は70個程度あり、多すぎるので割愛します。
    i386
    k6
    略...
    vi. BUILDオプションの例

    たとえば、以下のオプションでコンパイルします。

    BUILD=debug release <runtime-link>static/dynamic

    こうすると、1回のコンパイルで、通常つかうすべての組み合わせでコンパイルできます。
    意味は、
    ・debugモード、リリースモードでそれぞれ、コンパイル
    ・リンク形式は、スタティックリンクとダイナミックリンク用とを両方とも作成
    です。
    基本的に、ほかはデフォルト値でかまいません。


    4.

    Compiler StatusとBoost退行テストについて

     

    ブーストライブラリでは、ライブラリごとに退行(回帰)テスト(Regression Tests)を行い、その結果をCompiler Status(コンパイラステータス)として開示しています。
    ライブラリを利用する上で非常に重要なので、ここで解説しておきます。

    ブーストライブラリは、本来すべての標準C++に準拠したコンパイラで動くように設計されています。しかし、標準C++の仕様はあまりにも膨大で、すべてのコンパイラが標準C++に完全準拠しているわけではありません(というより、2003/04/26現在の所、1つもありません)。
    ブーストライブラリの強力な機能の多くは、最近、標準C++に取り込まれた機能を多数使っており、ライブラリをビルド・実行のできるコンパイラや、ビルド・実行の出来ないコンパイラが混在しています。
    そこで、Compiler Statusを開示して、どのライブラリは、どのプラットフォームのどのコンパイラで動作するのかを分かるようになっています。

    Compiler Statusは、退行テストをして設定されます。
    以下に、Compiler Statsuページの読み方を解説します。

    "Boost Compiler Status Report"
    ( http://www.boost.org/status/compiler_status.html )の部分訳

    Compiler Statusテーブルを理解する

    テーブルは、以下のようになっているだろう。

    Run Date: 21 Sep 2001 15:31 GMT

    System Configuration: Microsoft Windows 32bit

    Program Test
    Type
    BelchFire
    Rev 5280
    WorkHorse
    5.3
    libs/foo/test/foo_test.cpp compile Pass Pass
    libs/bar/bar_test.cpp run Fail Pass

    "Run Date"は重要である。なぜなら、ステータステーブルを作った退行テストは非同期に実行されるからである。よって、最新のブーストリリースの状況を反映していないかもしれない。

    "Program"行はテストを行った実際のソースファイルを表す。テーブルのそれぞれ列は、違うテストを表す。

    "Test Type"行は、以下に示すテストの結果のタイプを表す。

    Test Type
    テストの種類
    Action
    実施する作業
    Required to Pass
    パスの要件
    Description and Use
    説明と使い方
    compile コンパイル コンパイラが0を返す

    ソースファイルが正しくコンパイルされるかを確かめる。しかし、リンクや実行は試みない。この事実は、有効なオブジェクトライブラリの実行テストを、実行できないときに使う。

    compile-fail コンパイル コンパイラが0を返さない ソースファイルのコンパイルが失敗することを確かめる。この結果は、予期したコンパイル時エラーが検出したことを確かめるために使う。
    link コンパイル、リンク コンパイラとリンカの両方が0を返す ソースらファイルが正しくコンパイル・リンクされるかを確かめる。しかし、実行は試みない。この事実は、有効なデータファイルの実行テストを、実行できないときに使う。
    link-fail コンパイル、リンク コンパイラとリンカのいずれかが0を返さない ソースファイルがコンパイルとリンクに失敗することを確かめる。未解決の外部の仕事※1に依存しているか検出することを確かめる。
    run コンパイル、リンク、実行 コンパイラ・リンカ・実行時のすべてが0を返す ソースファイルが正しくコンパイル・リンクされ、その結果のプログラムが正常に動作(戻り値0を示す)したことを確かめる。 これはほとんどの用途のための主要なテストタイプである。
    run-fail コンパイル、リンク、実行 コンパイラとリンカの両方が0を返し、実行時に0を返さない ソースファイルが正しくコンパイル・リンクされ、その結果のプログラムがいくつかのエラーを検出していることを確かめる。適切にランタイムエラー検出コードが動作していることを確かめるために使う。

    訳注
    ※1:外部リンクファイルだと推察される

    Revised 11 October 2002

    もしかしたら、あなたの使いたいライブラリの機能は、あなたの持っているコンパイラではビルド出来ないかもしれません。その時は、ベンダに働きかけるか、プロジェクトに参加してそのコンパイラで動くようにしてみてはいかがでしょうか。


    5.

    各コンパイラ固有の情報

     
      面倒なので、インクルードパスの設定までしか書いていません。
       
    i.

    Microsoft Visual C++

    各バージョン共通

     


    6.0

    インストール

    VCにパスを通すには、VCを起動し、ツール(T) -> オプション(O)... -> ディレクトリ にて追加すればよい。このとき[表示するディレクトリ(S):]が「インクルード ファイル」になっていることを確認すること。

    設定例
    図1.設定例

    ビルド

    ●方法1

    • VCのインストールパスのbinフォルダの中にある、"VCVARS32.BAT"を実行
    • bjam "-sTOOLS=msvc" 改行
    • コンパイルが開始される

    • C:\>cd lib\boost_1_30_2

      C:\lib\boost_1_30_2>"C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT"
      Setting environment for using Microsoft Visual C++ tools.
      C:\lib\boost_1_30_2>bjam "-sTOOLS=msvc" "-sBUILD=debug release <runtime-link>static/dynamic"

      (略)

      ...patience...
      ...found xxxx targets...
      ...updating xxxx targets...

      (略 : コンパイル時のメッセージ)

      ...updated xxxx targets...

      C:\lib\boost_1_30_2>


    ●方法2

    • SET VISUALC=path 改行
      pathは、VCのインストールパス。例: VC6の場合"C:\……\VC98\bin"のアンダーライン部分まで。
    • bjam "-sTOOLS=msvc" 改行
    • コンパイルが開始される

    • C:\>cd lib\boost_1_30_2

      C:\lib\boost_1_30_2>SET VISUALC="C:\Program Files\Microsoft Visual Studio\VC98"

      C:\lib\boost_1_30_2>bjam "-sTOOLS=msvc" "-sBUILD=debug release <runtime-link>static/dynamic"

      (略)

      ...patience...
      ...found xxxx targets...
      ...updating xxxx targets...

      (略 : コンパイル時のメッセージ)

      ...updated xxxx targets...

      C:\lib\boost_1_30_2>


    6.0 with STLport


    7.0

     

    ii.

    Borland C++ Compiler 5.5.1

    インストール

    パスを通すには、Borland C++ Compiler 5.5.1のインストールパス直下の、binフォルダ(例: C:\borland\bcc55\bin)にある、bcc32.cfgを編集する必要があります。
    bcc32.cfgに以下の行を加えてください

    -I"Boostの展開パス"

    設定例:

    -I"C:\lib\boost_1_30_2"
    -I"c:\Borland\Bcc55\include"

    ビルド

    • SET BCCROOT=path 改行
      pathは、Borland C++ Compilerのインストールパス。 例: "C:\borland\bcc55\bin"のアンダーライン部分まで。
    • bjam "-sTOOLS=borland" 改行
    • コンパイルが開始される

    • C:\>cd boost_1_30_2

      C:\lib\boost_1_30_2>SET BCCROOT="C:\borland\bcc55"

      C:\lib\boost_1_30_2>SET TOOLS=borland


      C:\lib\boost_1_30_2>bjam "-sBUILD=debug release <runtime-link>static/dynamic"

      (略)

      ...patience...
      ...found xxxx targets...
      ...updating xxxx targets...

      (略 : コンパイル時のメッセージ)

      ...updated xxxx targets...

      C:\lib\boost_1_30_2>

    iii.

    Metorowerks CodeWarrior 8.3

    ... 作成中 ... しばらくお待ち下さい。
    iv.

    その他の環境の方

    現在のところ執筆予定はありません。お使いのコンパイラのマニュアルと、Boost.orgの記述を参考にして設定してください。

    6.

    付録: Boost.Jamのビルド

     

    Win32をお使いの方
    <Boostの展開パス>\tools\build\jam_srcにある、build.batを実行すると、コンパイルされます。

    Unixをお使いの方
    <Boostの展開パス>\tools\build\jam_srcにある、build.shを実行すると、コンパイルされます。

       
     
         
    <  Before   Top   Next  >
     
      - /Home/Boost/ -
         
      ご意見などは nazy@s27.xrea.com まで