다른 여러 메이크 파일을 포함하는 메이크 파일이 있는데, 모두 다음과 같은 변수에 추가됩니다.
VAR := Something SomethingElse
VAR += SomeOtherThing
(...)
이제 변수 SomethingElse
에서 제거 하고 싶습니다 VAR
. (...)
이 작업을 수행하려면 대신 무엇을 입력해야 합니까?
나는 GNU Make를 사용하고 있으며 GNU Make 특정 솔루션이 좋습니다.
답변
GNU Make를 사용하는 경우 filter-out
텍스트 기능을 사용할 수 있습니다 .
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
이것은 필터 아웃이 실행될 때 모든 “재 귀성”을 깨뜨리지 만 귀하의 경우에는 중요하지 않을 수 있습니다.
답변
저도 비슷한 상황이기 때문에 새로운 답변을 추가하고 싶습니다. 제 경우에는 변수 문자열에도 쉼표가 있었고 더 나아가 쉼표와 마지막 단어를 제거하고 싶었습니다.
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)"