bjam を使用してコンパイル


ひとまず、手元の環境だとこれでコンパイルが出来たのでちょっとまとめ。
今回は、gcc を使用して、コンパイルを行います。

☆事前にやっておくこと

とりあえず、コマンドから bjam を呼び出せれば問題ないと思います。
(結構前に設定したからよく覚えてない…)

ディレクトリ構成

\test\
│ build.bat
│ jamroot.jam
│ main.cpp
│ project-config.jam
│ 
└―bin ←ここにコンパイル結果が出力される

☆main.cpp


[main.cpp]

#include <iostream>

#include <pstade/oven/io.hpp>
#include <pstade/oven/counting.hpp>
#include <pstade/oven/filtered.hpp>

int
main(){
    std::cout << "hello GCC compiler" << std::endl;
    
    namespace oven = pstade::oven;

    auto is_even = [](int n){ return n % 2 == 0; };

    std::cout << (oven::counting(0, 10)|oven::filtered(is_even)) << std::endl;

    return 0;
}


コンパイルを行うソースファイルです。

☆jamroot.jam


[jamroot.jam]

project
    : requirements "/boost/boost_1_44_0"
       : requirements "/pstade/pstade"
    ;

exe sample : main.cpp ;


ここでは、include のパスとソースファイルと出力ファイルの設定を行っています。
【sample.exe】という実行ファイルが出力されるように設定。
boost と pstade のパスは、手元の環境に合わせて適当に設定してください。

☆project-config.jam


[project-config.jam]

using gcc : 4.5.0 : C:/MinGW/bin/g++.exe -std=gnu++0x ;


ここでは、toolset に渡す gcc の設定を行っています。

bjam toolset=gcc ← こいつ

今回は、C++0x の機能を使いたかったので、【-std=gnu++0x】オプションを付けています。

☆build.bat

set BOOST_BUILD_PATH=D:/06010080/home/work/software/lib/boost/boost_1_44_0/tools/build/v2
bjam --toolset=gcc
bin\gcc-mingw-4.5.0\debug\sample.exe


環境パスの【BOOST_BUILD_PATH】を設定しなければいけないので、バッチファイルで書きました。
【BOOST_BUILD_PATH】が設定されていれば、コマンドから直接叩いても問題ないと思います。

☆実行

test>build.bat

test>set BOOST_BUILD_PATH=/boost/boost_1_44_0/tools/build/v2

test>bjam --toolset=gcc
...patience...
...patience...
...patience...
...found 2662 targets...

test>bin\gcc-mingw-4.5.0\debug\sample.exe
hello GCC compiler
{0,2,4,6,8}


こんな感じで、gccコンパイルする事が出来ました。
初期設定の辺りが、かなりうる覚えなのでこれだけだと動かないかも…。
設定がちょっとややこしいですが、gcc と msvc を切り替えてコンパイルするのがすごく楽です。
単体テストなんかも出来るみたいなので結構便利そうです。


[参照]
http://www12.ocn.ne.jp/~dante98/bbv2-tutorial.html
http://d.hatena.ne.jp/faith_and_brave/20100908/1283917408