2013/11/17

WinodwsでBoostをソースからインストール

これまでWindowsにboostをインストールする際には"BoostPro"を利用していました。

BoostPro Computing - Advanced C++ Support, Training, and Development - BoostPro
http://www.boostpro.com/

しかし、今回このページに行くと「開発終了」であるというアナウンスが出ていました。
BoostProはコンパイル済みのものをインストールできるので簡単でよかったのですが、
最新のBoostのバージョンは提供されていません。

よって、Boostをソースからインストールしたいと思います。

まず、Boostをダウンロードしてきます。現時点では1.55.0が最新版みたいです。zipで落としてくるのは重くて大変なので、解凍できるソフトをインストールしているなら7zあたりがいいと思います。
Boost Downloads
http://www.boost.org/users/download/

解凍をして任意の場所に置いておきます。
今回は次の場所に置きました。
C:\boost\boost_1_55_0

次にコマンドプロンプトを起動します。
しかし、これは通常のコマンドプロンプトではなく、VisualStudioでコンパイルしないといけないためVisualStudioに付属しているコマンドプロンプトを利用します。
今回はVisualStudio2010 ExpressでBoostを使いたいので

すべてのプログラム ->> MicroSoft Visual Studio 2010 Express ->> Visual Studio コマンドプロンプト(2010)

のコマンドプロンプトを開きます。

先ほど置いたファイルの場所に行き、
bootstrap.bat

をします。これはmakeでいうconfigureみたいなものみたいです。
 これを実行すると次のような表示が出てきます。
C:\boost\boost_1_55_0>bootstrap.bat
Building Boost.Build engine

Bootstrapping is done. To build, run:

    .\b2

To adjust configuration, edit 'project-config.jam'.
Further information:

    - Command line help:
    .\b2 --help

    - Getting started guide:
    http://boost.org/more/getting_started/windows.html

    - Boost.Build documentation:
    http://www.boost.org/boost-build2/doc/html/index.html
 これを見ても分かるように、つぎはb2.exeを実行するといいようです。
加えて、b2.exeを実行するときに一緒にオプションを指定してあげます。

どのようなオプションがあるかは--helpオプションで確認することができます。
このオプションをつけるとしたのような出力が出てきました。
C:\boost\boost_1_55_0>b2.exe --help
Boost.Build 2011.12-svn

Project-specific help:

  Project has jamfile at Jamroot

Usage:

  b2 [options] [properties] [install|stage]

  Builds and installs Boost.

Targets and Related Options:

  install                 Install headers and compiled library files to the
  =======                 configured locations (below).

  --prefix=<PREFIX>       Install architecture independent files here.
                          Default; C:\Boost on Win32
                          Default; /usr/local on Unix. Linux, etc.

  --exec-prefix=<EPREFIX> Install architecture dependent files here.
                          Default; <PREFIX>

  --libdir=<DIR>          Install library files here.
                          Default; <EPREFIX>/lib

  --includedir=<HDRDIR>   Install header files here.
                          Default; <PREFIX>/include

  stage                   Build and install only compiled library files to the
  =====                   stage directory.

  --stagedir=<STAGEDIR>   Install library files here
                          Default; ./stage

Other Options:

  --build-type=<type>     Build the specified pre-defined set of variations of
                          the libraries. Note, that which variants get built
                          depends on what each library supports.

                              -- minimal -- (default) Builds a minimal set of
                              variants. On Windows, these are static
                              multithreaded libraries in debug and release
                              modes, using shared runtime. On Linux, these are
                              static and shared multithreaded libraries in
                              release mode.

                              -- complete -- Build all possible variations.

  --build-dir=DIR         Build in this location instead of building within
                          the distribution tree. Recommended!

  --show-libraries        Display the list of Boost libraries that require
                          build and installation steps, and then exit.

  --layout=<layout>       Determine whether to choose library names and header
                          locations such that multiple versions of Boost or
                          multiple compilers can be used on the same system.

                              -- versioned -- Names of boost binaries include
                              the Boost version number, name and version of
                              the compiler and encoded build properties. Boost
                              headers are installed in a subdirectory of
                              <HDRDIR> whose name contains the Boost version
                              number.

                              -- tagged -- Names of boost binaries include the
                              encoded build properties such as variant and
                              threading, but do not including compiler name
                              and version, or Boost version. This option is
                              useful if you build several variants of Boost,
                              using the same compiler.

                              -- system -- Binaries names do not include the
                              Boost version number or the name and version
                              number of the compiler. Boost headers are
                              installed directly into <HDRDIR>. This option is
                              intended for system integrators building
                              distribution packages.

                          The default value is 'versioned' on Windows, and
                          'system' on Unix.

  --buildid=ID            Add the specified ID to the name of built libraries.
                          The default is to not add anything.

  --python-buildid=ID     Add the specified ID to the name of built libraries
                          that depend on Python. The default is to not add
                          anything. This ID is added in addition to --buildid.

  --help                  This message.

  --with-<library>        Build and install the specified <library>. If this
                          option is used, only libraries specified using this
                          option will be built.

  --without-<library>     Do not build, stage, or install the specified
                          <library>. By default, all libraries are built.

Properties:

  toolset=toolset         Indicate the toolset to build with.

  variant=debug|release   Select the build variant

  link=static|shared      Whether to build static or shared libraries

  threading=single|multi  Whether to build single or multithreaded binaries

  runtime-link=static|shared
                          Whether to link to static or shared C and C++
                          runtime.


Configuration help:

  Configuration file at C:\boost\boost_1_55_0\tools\build\v2\user-config.jam

  This file is used to configure your Boost.Build installation. You can modify
this file in place, or you can place it in a permanent location so that it
does not get overwritten should you get a new version of Boost.Build. See:

  http://www.boost.org/boost-build2/doc/html/bbv2/overview/configuration.html

for documentation about possible permanent locations.

General command line usage:

    b2 [options] [properties] [targets]

  Options, properties and targets can be specified in any order.

Important Options:

  * --clean Remove targets instead of building
  * -a Rebuild everything
  * -n Don't execute the commands, only print them
  * -d+2 Show commands as they are executed
  * -d0 Supress all informational messages
  * -q Stop at first error
  * --reconfigure Rerun all configuration checks
  * --debug-configuration Diagnose configuration
  * --debug-building Report which targets are built with what properties
  * --debug-generator Diagnose generator search/execution

Further Help:

  The following options can be used to obtain additional documentation.

  * --help-options Print more obscure command line options.
  * --help-internal Boost.Build implementation details.
  * --help-doc-options Implementation details doc formatting.

...found 1 target...
しかし、オプションをすべて指定しなくても、基本的には
b2.exe
とオプションなしで実行してもデフォルトで勝手に指定してくれます。
デフォルト以外の値にしたい時だけオプションをつけるといいです。
自分は次のようなオプションを付けました。
b2.exe toolset=msvc-10.0 -j8

自分の環境ではインストールするPCにVisualStudio2010以外にもVisualStudioがインストールされていて、このオプションをつけないとVisualStudio2010ではないものでコンパイルされてしまったので"toolset=msvc-10.0"で2010でのコンパイルを明示しました。
msvc-10.0の10.0のところは
VisualStudio2008 ->> msvc-9.0
VisualStudio2010 ->> msvc-10.0
VisualStudio2012 ->> msvc-11.0
VisualStudio2013 ->> msvc-12.0


のようにして好きなバージョンでコンパイルできます。
また、"-j"オプションはmakeでは定番ですが、コンパイルするときに並列処理で利用するコア数を指定しています。
数が多いほどコンパイルは早いですが、多くてもCPUのコア数程度にしましょう。

並列処理をしてもコンパイルにはある程度時間がかかります。

終わると次のような出力が出てきます。
The Boost C++ Libraries were successfully built!

The following directory should be added to compiler include paths:

    C:/boost/boost_1_55_0

The following directory should be added to linker library paths:

    C:\boost\boost_1_55_0\stage\lib
これを参考にVisual Studio 2010でインクルードディレクトリとライブラリディレクトリを追加しましょう。
これでおkです。

あとは何かしらネットで見つけたサンプルを実行してみましょう。



参考にしたサイト
Boost開発環境の構築 @Visual Studio 2010 SP1 - 堕(惰)プログラマ開発記録
http://d.hatena.ne.jp/godai_0519/20110520/1305895194

予定外 Windows環境へのBoostライブラリインストール
http://homepie.blog.shinobi.jp/vc--/windows%E7%92%B0%E5%A2%83%E3%81%B8%E3%81%AEboost%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

Visutal Studio で Boost C++ Libraries をビルドする - Life like a clown
http://d.hatena.ne.jp/tt_clown/20110323/1300886446#20110323f1

Boostライブラリのビルド方法 - boostjp
https://sites.google.com/site/boostjp/howtobuild

0 件のコメント:

コメントを投稿