Help us understand the problem. What is going on with this article?

VS 2013 で boost 1.55.0 の 32 / 64 ビット版をビルド

More than 5 years have passed since last update.

VS 2013 (VC++ 12) で boost 1.55.0 の 32 ビットおよび 64 ビット版をビルドしたときの手順をまとめる。

前提として、boost のアーカイブを D:\Libraries\boost\boost_1_55_0 以下に展開した。以下では、D:\Libraries\boost\boost_1_55_0$(BOOST_ROOT) と呼ぶ。

Boost.Build

まず $(BOOST_ROOT)\tools\build\v2 フォルダに移動して、

> bootstrap.bat
> .\b2 --prefix=D:\Programs\b2 install

とすることで、Boost.Build v2 をビルドし D:\Programs\b2 にインストールすることができる。

Boost.Build のインストールが完了したら D:\Programs\b2\bin にパスを通しておく。

boost 自体のビルド

次に $(BOOST_ROOT) フォルダに移動し、何も考えずに全部の組み合わせでビルドするなら、

> b2 --build-type=complete msvc stage

でビルド完了を待つ。

ただし、これでは並列ビルドをしないのでビルドに時間がかかる上に、64 ビットコードは生成されない。

address-model=32,64 とすれば同時にビルドできるという説もネットで見かけるが、ステージディレクトリが同じだと 32 ビットと 64 ビットのスタティックライブラリ/インポートライブラリが同名になってしまうため、異なる --stagedir 指定で個別にビルドしないといけない気がする。

そこで、もう少し細かくカスタマイズするなら、たとえば

  • シングルスレッド版は不要
  • 32 ビット版と64 ビット版をビルド
  • CRT に静的リンクするスタティックライブラリ + CRT に動的リンクする DLL
  • 並列処理は 8 プロセスまで許可

という構成で

> b2 toolset=msvc threading=multi variant=debug,release link=static runtime-link=static address-model=32 --stagedir=stage/x86 -j 8
> b2 toolset=msvc threading=multi variant=debug,release link=shared runtime-link=shared address-model=32 --stagedir=stage/x86 -j 8
> b2 toolset=msvc threading=multi variant=debug,release link=static runtime-link=static address-model=64 --stagedir=stage/x64 -j 8
> b2 toolset=msvc threading=multi variant=debug,release link=shared runtime-link=shared address-model=64 --stagedir=stage/x64 -j 8

のような感じでビルドするとよい。

なお、64 ビット OS 上で 64 ビットコードを生成する際はツールセット(VC++ へのパス?)の切り替えで 64 ビットコンパイラも使用できるが、ここではすべて 32 ビットコンパイラで生成した。

このようにビルドした場合、boost を利用するプロジェクトでは

  • インクルードフォルダに $(BOOST_ROOT) フォルダ
  • ライブラリフォルダに
    • 32 ビットなら $(BOOST_ROOT)\stage\x86\lib
    • 64 ビットなら $(BOOST_ROOT)\stage\x64\lib

を含めることで、boost が使えるようになる。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした