私は次のようなMakefileを持っている:パターンルールとpatsubstをGNU makeで使用するときに "%"記号を正しくエスケープする方法は?
m1:
@echo building m1
m1_:
@echo building m1_
m2:
@echo building m2
m2_:
@echo building m2_
m3_DEPS = m2 m1
SUBSTITUTE=$(patsubst %,%_,$([email protected]_DEPS))
.SECONDEXPANSION:
#%: $$(SUBSTITUTE)
%: $$(patsubst \%,\%_,$$([email protected]_DEPS))
@echo Building [email protected]
@echo Dependencies are $^
キーの行は、私は、それ自体がパーセント記号を使用するパターンルールとpatsubst、両方を使用しています
%: $$(patsubst \%,\%_,$$([email protected]_DEPS))
です。私は\
で%
文字をエスケープできると思ったが、まだ期待された動作を得ていない。 「M3を作る」実行すると、出力に
building m2
building m1
Building m3
Dependencies are m2 m1
を与えるしかし、私は
building m2_
building m1_
Building m3
Dependencies are m2_ m1_
は、その行をコメントアウトし、実際にその出力を生成しない変数を介して間接的にpatsubst
を呼び出してもらうことを期待しています。
SUBSTITUTE=$(patsubst %,%_,$([email protected]_DEPS))
%: $$(SUBSTITUTE)
また、私は私はパターンルールとパーセント記号の相互作用とは何かであると思わせるこれは、非パターンルールが機能使用していることをテストしています
m3: $$(patsubst %,%_,$$([email protected]_DEPS))
これは私が変数に式全体を隠して何をしたかのようであるが、より直接的に質問に答えます。 –
ああ申し訳ありませんが、私はあなたがそれをしたことに気付かなかった。私はちょうど「これは可能ではないようです」と見て、残りの部分はスキップしました。 –