Makefileには、他のいくつかのMakefileが含まれており、これらはすべて次のような変数に追加されます。
VAR := Something SomethingElse
VAR += SomeOtherThing
(...)
ここで、SomethingElse
変数からVAR
を削除したいと思います。これを行うには、(...)
の代わりに何を入れますか?
私はGNU Make、およびGNU Make特定のソリューションで問題ありません。
filter-out
テキスト関数 GNU Makeを使用している場合。
OTHERVAR := $(filter-out SomethingElse,$(VAR))
上記の正しい答えの上に:
VAR = bla1 bla2 bla3 bla4 bla5
TMPVAR := $(VAR)
VAR = $(filter-out bla3, $(TMPVAR))
all:
@echo "VAR is: $(VAR)"
出力:
VARは:bla1 bla2 bla4 bla5
これにより、フィルターアウトが実行されたときにすべての「再帰性」が破壊されることに注意してください。
私も同様の状況にあるので、新しい答えを追加したいと思います。私の場合、変数文字列にコンマもあり、さらに、コンマと最後のWordを削除したかった:
VAR = "bla1, bla2"
この場合、フィルターアウトは機能しません(引用符がない場合、前の回答でも機能しません)
私の解決策はsubst
を使用することです:
VAR = "bla1, bla2"
TTT = , bla2
TMPVAR := $(VAR)
SUBST = $(subst $(TTT),, $(TMPVAR))
FILT = $(filter-out $(TTT), $(TMPVAR))
subst:
@echo "subst : $(SUBST)"
filter:
@echo "filter-out : $(FILT)"