Удалить элемент из переменной Make-файла?
у меня есть makefile, который включает в себя несколько других makefiles, которые в свою очередь все добавляют к переменной, как это:
VAR := Something SomethingElse
VAR += SomeOtherThing
(...)
теперь я хочу удалить SomethingElse
С VAR
переменной. Что я ставлю на место (...)
для этого?
Я использую GNU Make, и GNU Make конкретное решение будет в порядке.
3 ответа:
вы могли бы использовать
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 is: bla1 bla2 bla4 bla5обратите внимание, что это нарушает всю "рекурсивность" при выполнении фильтрации, но это может не иметь значения в вашем случае.
поскольку у меня также есть аналогичная ситуация, я хочу добавить новый ответ. В моем случае также были запятые в строке переменной, и, более того, я хотел удалить запятую и последнее слово :
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)"