VS2013 で Boost 1.55.0 をビルド
VS2013 での Boost 1.55.0 のビルドのメモ。あるヘッダーファイルに修正を加えてからでないとビルドが成功しなかった。
環境
- Windows 7 Professional x64
- Visual Studio Premium 2013
エラー内容
c:\Boost\boost_1_55_0\boost/archive/iterators/transform_width.hpp(151) : error C2039: 'min' : 'std' のメンバーではありません。 c:\Boost\boost_1_55_0\boost/archive/iterators/transform_width.hpp(151) : error C3861: 'min': 識別子が見つかりませんでした
修正箇所
- 参考:https://svn.boost.org/trac/boost/ticket/9196
- boost/archive/iterators/transform_width.hppの冒頭部分に algorithmのインクルードを追加
#include <boost/config.hpp> #include <boost/serialization/pfto.hpp> #include <algorithm> // 追加箇所 #include <boost/iterator/iterator_adaptor.hpp> #include <boost/iterator/iterator_traits.hpp>
最終的なビルド手順
- Boostのソースをダウンロードして解凍する。今回はC:\Boost下に解凍。
- boost/archive/iterators/transform_width.hppを上述の通り修正
- 開発者コマンドプロンプトを開く
- 「スタートメニュー」→「Visual Studio 2013」→「Visual Studio ツール」
- ショートカットフォルダが開く
- (C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts)
- 「開発者コマンドプロンプト for VS2013」を起動
- コマンドを入力してビルド、インストール
- パラメータの意味は次の通り
- toolset: msvc-12.0 (VS2013) のコンパイラを使用
- link: static link library (.lib) か dynamic link library (.dll) か
- runtime-link: C/C++ランタイムライブラリを static link するか dynamic link するか
- address-model: 32bit か 64bit か
- build-dir: ビルド用ディレクトリ
- stagedir: libを出力する場所
- j: このビルドをする際に使用するCPUコア数 (並列処理)
- install --prefix: インストール先
- パラメータの意味は次の通り
> cd C:\Boost\boost_1_55_0 > bootstrap.bat > b2.exe toolset=msvc-12.0 link=static runtime-link=static,shared --build-dir=build/x64 --stagedir=stage/x64 address-model=64 -j 8 install --prefix="../"