공백으로 구분 된 파일 이름 목록에서 확장자를 대체하는 것은 일반적인 요구 사항이며이를위한 기본 제공 기능이 있습니다. x
목록의 모든 이름 끝에 를 추가하려면 다음을 수행하십시오.
FILES_OUT = $(FILES_IN:=x)
일반적인 형식은 $(VARIABLE:OLD_SUFFIX=NEW_SUFFIX)
. 이것은의 값을 취하고이 접미사로 끝나는 각 단어의 끝을 다음으로 VARIABLE
대체합니다 (일치하지 않는 단어는 변경되지 않은 상태로 남음). GNU make는이 기능 (모든 make 구현에 존재하는) 대체 참조를 호출합니다 .OLD_SUFFIX
NEW_SUFFIX
방금 변경하려는 경우 .doc
에 .docx
와 .xls
에 .xlsx
이 기능을 사용하면 중간 변수를 사용해야합니다.
FILES_OUT_1 = $(FILES_IN:.doc=.docx)
FILES_OUT = $(FILES_OUT_1:.xls=.xlsx)
약간 더 일반적인 구문을 사용할 수도 있습니다 $(VARIABLE:OLD_PREFIX%OLD_SUFFIX=NEW_PREFIX%NEW_SUFFIX)
. 이 기능은 GNU make에 고유하지 않지만 일반 접미사 변경 대체만큼 이식성이 없습니다.
: 당신은 같은 줄에 여러 대체 체인 수있는 GNU 메이크 기능도 있습니다 patsubst
기능 .
FILES_OUT = $(patsubst %.xls,%.xlsx,$(patsubst %.doc,%.docx,$(FILES_IN)))
FILES_OUT := $(patsubst %,%x,$(FILES_IN))
규칙이 실제로 그렇게 일반화 될 수 있다면.