Ich habe ein Makefile, das mehrere andere Makefiles enthält, die wiederum alle zu einer Variablen wie dieser hinzugefügt werden:
VAR := Something SomethingElse
VAR += SomeOtherThing
(...)
Jetzt möchte ich SomethingElse
aus der VAR
Variablen entfernen . Was setze (...)
ich dafür ein?
Ich verwende GNU Make und eine GNU Make-spezifische Lösung ist in Ordnung.
=
und nicht:=
?=
erhalte ich einen Makefile-Fehler, der etwas über VAR aussagt und sich schließlich in einer unendlichen Rekursion verweist. (VAR = $(filter-out SomethingElse,$(VAR))
)VAR := $(filter-out SomethingElse,$(VAR))
(Mit:=
und nicht=
). Vielen Dank. :)VAR := $(filter-out A B C,$(VAR))
.filter-out
funktioniert nur bei durch Leerzeichen getrennten Wörtern. Wenn Sie etwas aus einer Zeichenfolge entfernen müssen, die nicht durch Wörter getrennt ist, können Siesubst
stattdessen verwendenfilter-out
. Dh:$(subst -world,,hello-world)
würde das Ergebnis gebenhello
.