夏休みなのでbjam始めてみます 2日目

1日目と同日公開ですが、2日目です。はい。デフォルトのvariantがdebugなので、ぼーっとしてると遅いバイナリを作ってしまいそうで怖いですね。3日目に続くかは謎です。

variantオプション

bjamはデフォルトでdebugモードでビルドされます。ビルドモードを変更するにはbjamの引数にvariantオプションを渡すか、単にdebugやreleaseと引数に加えます。なお、コンパイルオプションその他を一杯表示させるには、 -d+2 オプションを渡します。逆に、出力を最小限にしたい場合は-d0を渡します。

Debug:

$ $BOOST_ROOT/bjam -d+2 debug
[]
"g++-mp-4.6"  -ftemplate-depth-128 -O0 -fno-inline -Wall -g -dynamic -gdwarf-2 -fexceptions -fPIC     -c -o "bin/darwin-4.6/debug/a.o" "a.cpp"
[]

Release:

$ $BOOST_ROOT/bjam -d+2 variant=release
[]
"g++-mp-4.6"  -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -dynamic -gdwarf-2 -fexceptions -fPIC  -DNDEBUG   -c -o "bin/darwin-4.6/release/a.o" "a.cpp"
[]

なお、variantは複数指定できるので、releaseとdebugを同時にビルドできます。

Debug+Release:

$ $BOOST_ROOT/bjam -d+2 debug release
[]
"g++-mp-4.6"  -ftemplate-depth-128 -O0 -fno-inline -Wall -g -dynamic -gdwarf-2 -fexceptions -fPIC     -c -o "bin/darwin-4.6/debug/a.o" "a.cpp"
[]
"g++-mp-4.6"  -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall -dynamic -gdwarf-2 -fexceptions -fPIC  -DNDEBUG   -c -o "bin/darwin-4.6/release/a.o" "a.cpp"
[]

-j オプション

GNU Makeと同様に-jオプションを指定すると、平行ビルドで実行されます。多数のコアがあるマシンで実行する場合は、ビルド時間が短縮される可能性があります。
boost本体レベルの規模となると物理8コアのマシンで、ビルド時間が-jなしで604秒、-j8付きで93.8秒となり、8倍とはいきませんが、6倍程度高速化されています。