[プログラミング] 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
トラックバックはありません.