Boost.Buildで複数のバージョンのgccを切り替えて使う方法

$ bjam toolset=gcc

のようにして実行をすると、システムデフォルトのgcc, g++が使われます。しかしながら、複数のgccのバージョンを切り替えてビルドやテストを行いたいケースもあります。autoconfによるビルドを採用しているソフトウエアならば、一般的に、

$ CXX=g++-4.5 ./configure

のようにすれば利用するコンパイラを指定することができますが、bjamではこのような指定ではコンパイラを切り替えることができません。

bjamでコンパイラの指定を行うには、site-config.jamを利用します。どこのディレクトリが参照されるかはドキュメントを参照してください (http://www.boost.org/doc/tools/build/doc/html/bbv2/overview/configuration.html)。

site-config.jamに以下のようにusingの記述を追加します。左から順にコンパイラ名、バージョン、コマンド名です。オプションなども指定できるようです。

using gcc : 4.5.1 : g++-4.5.1 ;
using gcc : 4.4.4 : g++-4.4.4 ;

そして、bjam実行時に使いたいコンパイラをtoolset引数で指定します。複数のtoolsetを同時に指定することもできます。

bjam toolset=gcc-4.5.1 toolset=gcc-4.4.4

複数のコンパイラを指定した場合は順々にビルドが進みます。コンパイラAでビルドした後にコンパイラBでビルドというようになります。また、オブジェクトファイルなどのコンパイラの出力ファイルはバージョン毎に分けて出力され、まざることはありません。