Boost.Build(bjam)で独自拡張子を対応する方法

Bost.Buildの使い方メモです。


よく読めば、公式に書いてあることを簡単に触れているだけですので、
すでにご存知の方はスルーしてください。


コードジェネレーターのような特殊なツールを使いたいときどうすればいいのか。


例として、「*.l」をflexコンパイルして、「*.c」を生成することを考えてみます。


まず、「*.l」の扱い方を定義したjamファイルを作ります。


flex.jam

import type ;
import generators ;

type.register L : l ;

generators.register-standard flex.flex : L : C ;

actions flex
{
    flex -o $(<) $(>)
}


actionsの中に実際のコマンドを書きます。
他のとこは大体こぴぺと一部修正でいけることがおおいでしょう。


すこし、補足します。

type.register L : l ;

ここで、拡張子「*.l」に対して、タイプの名前Lを付けています。

generators.register-standard flex.flex : L : C ;

この行に出てくる「C」というのは、bjam本体の方で定義されています。
上で定義した、LというタイプからCというタイプが生成されるというルールを記述しています。この書き方は、1:1の場合の書き方です。


メインのプロジェクト側で、

import flex ;

と書けば使えるようになります。