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

bjamが欲しいので、まずはboostをダウンロードして展開し、bjamをビルドします。そして、boostを展開したディレクトリをBOOST_ROOT環境変数に定義しておきます。BOOT_ROOTはbjamの動作上も必要です。

$ export BOOST_ROOT=/path/to/boost
$ cd $BOOST_ROOT
$ ./bootstrap

boost 1.47.0からbootstrapで作成されるbjamの実行ファイル名が、"bjam"と"b2"の2つになっています。1.47の段階ではこれらのファイルの内容は同一で単なるコピーのようですが、以降はbjamで統一します。

Mac環境で、Appleによって提供されていないgccを使う場合は、以下の修正を行う必要があります。(例えばMacports) -no-cpp-precompというオプションはApplegccにしか存在しないためです。(本当にこの修正で大丈夫なのか、よくわかんないですけど)

--- $BOOST_ROOT/tools/build/v2/tools/darwin.jam.org	2011-07-30 19:12:42.000000000 +0900
+++ $BOOST_ROOT/tools/build/v2/tools/darwin.jam	2011-07-30 19:12:49.000000000 +0900
@@ -498,7 +498,7 @@
 flags darwin.compile OPTIONS <link>shared : -dynamic ;
 
 # Misc options.
-flags darwin.compile OPTIONS : -no-cpp-precomp -gdwarf-2 -fexceptions ;
+flags darwin.compile OPTIONS : -gdwarf-2 -fexceptions ;
 #~ flags darwin.link OPTIONS : -fexceptions ;
 
 # Add the framework names to use.

さて、a.cppとJamrootファイルを用意して適当にコンパイルしてみます。

a.cpp:

#include <iostream>
int main() { std::cout << "Hello bjam\n"; return 0; }

Jamroot:

exe a : a.cpp ;
$ ls
Jamroot a.cpp
$ $BOOST_ROOT/bjam
...found 9 targets...
...updating 4 targets...
common.mkdir bin/darwin-4.6
common.mkdir bin/darwin-4.6/debug
darwin.compile.c++ bin/darwin-4.6/debug/a.o
darwin.link bin/darwin-4.6/debug/a
...updated 4 targets...
$ ./bin/darwin-4.6/debug/a
Hello bjam

あ、2日目に続くかは謎です。