まだ多重継承でダイヤモンドの錬成をしていない僕ですが、
ついに近代汎用術式に手を出すことにしました。
現時点で最新版のBoost C++ 1.57.0をVisual Studio 2013で使うためのメモです。
汎用術式でありながら暗黒術式ではあるのですが、導入と使うのは割と簡単です。
いままで意識的に避けていたのがもったいない気がしてきました。
Getting Started on Windowsでかいつまんで説明します。
http://www.boost.org/doc/libs/1_57_0/more/getting_started/windows.html
一部説明を変更しています。
BoostをGet
http://www.boost.org/users/history/version_1_57_0.html からダウンロードしてね!
Boostを配置
好みだけどCドライブ直下にboostディレクトリを作成して
その下にboost_1_57_0を置く
C:\boost\boost_1_57_0\ boost doc libs more status tools ...
ヘッダーだけのライブラリ
ヘッダーだけで使えるモノ
Boost.Chrono Boost.Context Boost.Filesystem Boost.GraphParallel Boost.IOStreams Boost.Locale Boost.MPI Boost.ProgramOptions Boost.Python Boost.Regex Boost.Serialization Boost.Signals Boost.System Boost.Thread Boost.Timer Boost.Wave
Boostライブラリのバイナリを使う準備
Boostの置いてあるルートディレクトリ
つまりC:\boost\boost_1_57_0
に移動してコマンドプロンプトからbootstrap.batとb2.exeを叩く
※公式には書いていますが、念のため
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts
にある
Visual Studio 2013 x86 Native Tools コマンド プロンプトから
実行したほうが良いかも…どっちにしても警告でまくりだけど気にしなくてOKっぽい
> pushd C:\boost\boost_1_57_0 > bootstrap.bat && b2.exe -j 4
をコマンドプロンプトから実行
jオプションで4並列で動かしています
ここでカップラーメンを食べつつ次の作業に進みます。
その間PCのファンがBoostしています。
※b2.exeが終わるとstage\lib
が出来上がります
The Boost C++ Libraries were successfully built! The following directory should be added to compiler include paths: C:/boost/boost_1_57_0 The following directory should be added to linker library paths: C:\boost\boost_1_57_0\stage\lib
が出ればOKです。
環境変数の設定
システム環境変数(ユーザ環境変数でもいいけど…)を次のように設定します。
BOOST_ROOT C:\boost\boost_1_57_0 BOOST_LIB %BOOST_ROOT%\stage\lib
Boostライブラリをプログラムとリンクさせる
Win32コンソールアプリケーションで
空のプロジェクト(ソリューション)を作成して次をコピペ
#include <boost/regex.hpp> #include <iostream> #include <string> int main() { std::string testStr = "Subject: Hello, Boost Users!"; std::cout << testStr << '\n'; boost::regex pat("^Subject: (Re: |Aw: )*(.*)"); boost::smatch matches; if (boost::regex_match(testStr, matches, pat)) { std::cout << "Match : " << matches[2] << '\n'; } else { std::cout << "Don't match." << '\n'; } }
プロジェクトを選択して右クリックでプロパティ
クリック
プロパティページで
左上の構成 すべての構成を選ぶ
C/C++
を選択し
追加のインクルードディレクトリ
に$(BOOST_ROOT)
を設定
リンカー
を選択し
追加のライブラリのディレクトリ
に$(BOOST_LIB)
を設定
適用を押して、ビルドしてデバッグなしで開始
で実行して次のような結果が出ればOK
Subject: Hello, Boost Users! Match : Hello, Boost Users! 続行するには何かキーを押してください . . .
※ただ、今回の例に出しているregexであればC++11の
標準ライブラリにあるのでそっちを使ったほうが良いと思われます。
こうしてまた一歩C++の深い闇に入ってしまうのでありました。。。