var_expand_grammar その3
今日は残りの変数展開修飾子を実装しました。
差分
- :D (親ディレクトリの選択)
- :D=path (親ディレクトリの置換)
- :B (ベースファイル名の選択)
- :B=base (ベースファイル名の置換)
- :S (拡張子の選択)
- :S=suf (拡張子の置換)
- :M (アーカイブメンバの選択)
- :M=mem (アーカイブメンバの置換)
- :R=root (フルパスでない場合にrootを前につける)
- :E=val (変数が空ならvalで置換)
- :J=joinval (joinvalで区切った文字列に置換)
- :T (「/」を「\」に置換)
「アーカイブメンバ」というのがbjamでどういうときに使われるのか知らないのですが、bjamの想定する文字列の形式は、
<grist>path/base.suf(mem)
というもので、この「(mem)」の部分に当たります。
そのほか、
d = $(d:R=$(path)) ;
http://boost.cvs.sourceforge.net/boost/boost/tools/build/v2/build/virtual-target.jam?revision=1.123&view=markup
のように、変数展開修飾子のパラメータにも変数が使えることに気が付いたので対応しました。
差分
ついでに、面白い例をもう一つ。
$(:E=python:R=$(bin-path))
http://boost.cvs.sourceforge.net/boost/boost/tools/build/v2/tools/python.jam?revision=1.51&view=markup
最初の変数の名前がなくて(値は常に空)、「:E」で「python」という文字列に置換しています。
わざわざ変数に代入しなくても、変数展開修飾子の恩恵を受けられるというわけです。