[プログラミング] GNU make の単純展開変数
TEXINPUTS を自動的に設定してタイプセットを行う Makefile を書こうとして,次のように書くと失敗します.
% cat Makefile
TEXINPUTS=$(TEXINPUTS)./eps:
all: foo.tex
platex foo.tex
% make
platex foo.tex
make: *** Recursive variable `TEXINPUTS' references itself (eventually). Stop.
この原因は,make は変数(マクロ)の展開を,それが実際に使用された時点で行うためです.
変数に値を付け加えたい場合は,"=" の代わりに ":=" を使用して単純展開変数
を定義します.
% cat Makefile
TEXINPUTS := $(TEXINPUTS)./eps:
all: foo.tex
platex foo.tex
% make
platex foo.tex
(snip)
%
この場合,変数が定義された時点で 1 度だけ展開されます.ただし GNU make でないと使えません.
トラックバック
トラックバック URI: https://www.pakunet.jp/hoge/trackback/2005031902
トラックバックはありません.