結果だけでなく過程も見てください

日々の奮闘を綴る日記です。

VisualStudio2010でboostをビルドする

いいかげんOSと開発環境が古くなってきたので、
新しい環境に移行することにしました。

項目 移行元 移行先
OS WinXP(32-bit) Win7(64-bit)
VisualStudio 2005 2010

VisualStudioのバージョンアップに伴い、各種ライブラリも再ビルドする必要があります。
今回はboostライブラリを構築します。バージョンは現時点(2013/3/17現在)の最新1.53.0。

なお、今回はWoW64で動作する32-bitアプリケーション用のライブラリを構築します。
64-bitアプリケーション用ライブラリは作りません。

あとVisualStudio2010(VC++)はインストールしといてください。
エディションはなんでもいいですが自分はexpressにしました。

boostを楽に導入したい場合

Windowsで、少し古いバージョンでよければ
ビルド済のバイナリが以下のサイトで配布されているようです。
http://www.boostpro.com/download/

現時点(2013/3/17現在)、上記サイトのバイナリ最新は1.51.0(boostの最新は1.53.0)
今回はソースコードからビルドしますよ。

boostのビルド

まずはソースコードをダウンロードします。
http://www.boost.org/

最新の1.53.0はこちらから。
Windowsの場合はboost_1_53_0.zipを選びます。
http://sourceforge.net/projects/boost/files/boost/1.53.0/

適当なディレクトリのダウンロードして解凍します。
自分は「C:\temp」にしました。

[スタート]ボタンからVisualStudio2010を選び、
その中から[Visual Studio コマンド プロンプト (2010)]を選びます。

以下を実行して、boostの解凍ディレクトリに移動してください。

cd C:\temp\boost_1_53_0

以下を実行してください。
boostをビルドするバイナリbjam.exeなどが作成されます。

bootstrap.bat

いよいよビルドを開始します。
今回はリリースビルドのboostライブラリを静的リンクするので
パラメータvariant=release link=staticとします。

さて、bjam.exeにいろいろパラメータを渡してビルドするのですが、
一点だけ各人の環境によって変えるパラメータがあります。

bjam.exe toolset=msvc variant=release link=static runtime-link=static or shared

この「runtime-link」のパラメータです。staticsharedか。

これはVC++の標準ライブラリを静的リンク(コンパイルオプション/MT)するか
動的リンク(コンパイルオプション/MD)するか、を決めるものです。
ここ重要です。ここを間違えると自分のプロジェクトにboostライブラリを使おうとしてもリンクでこけます。

自分のプロジェクトにboostライブラリをリンクしますが、
パラメータruntime-linkは、その自分のプロジェクトの設定と同じにする必要があります。

要は、
自分のプロジェクトが/MTなら、runtime-linkも/MT。
自分のプロジェクトが/MDなら、runtime-linkも/MD。
という感じですね。

そのあたりの記事はこちらにも書いてます。

「luabindをビルドする方法」
http://d.hatena.ne.jp/taiyakisun/20110525#1306333280

ここでは、static(/MT)にします。

bjam.exe toolset=msvc variant=release link=static runtime-link=static

ビルド完了まで、しばらく待ちます。

ビルドが正常に完了すると、ライブラリファイルはカレントディレクトリ下の
stageディレクトリ以下に作成されます。具体的には↓。
今回は静的リンク用なので*.libファイルができます。(動的の場合は*.dllができます)

C:\temp\boost_1_53_0\stage\lib

あとはVisualStudioのプロジェクトにboostのincludeパスと
ライブラリパスを追加するだけです。

・includeパス
C:\temp\boost_1_53_0
・ライブラリパス
C:\temp\boost_1_53_0\stage\lib

実は、これまで[ツール]→[オプション]からVisualStudio全体の設定として
上記パスを追加できたのですが、VisualStudio2010からは追加できなくなってます。
この設定は、プロジェクトごとに行う必要があるとか・・・なんでこんなことになってるんでしょう。

プロジェクトにパスを追加するには、自分のプロジェクトのVisualStudio2010上の
ソリューション→プロジェクトを右クリック→[プロパティ]から
[構成プロパティ]→[VC++ ディレクトリ]から追加できます。

実はあるファイルにパスを書くことでVisualStudio全体の設定として
パスを追加する方法もあるみたいなのですが、よく調べてないので
後日別の記事で書こうと思います。

言っておきたいこと

実は、ライブラリを使って動作検証してないので、うまく動かないかも・・・^^;
間違いあったら訂正します。

プライバシーポリシー お問い合わせ