В этом примере make-файла:
EXTERNAL_TXT_FILES:= a/A.txt a/b/B.txt a/b/c/C.txt
EXTERNAL_TXT_NAMES:= $(notdir $(EXTERNAL_TXT_FILES))
DEST_TXT_FILES:= $(addprefix txt/, $(EXTERNAL_TXT_NAMES))
.PHONY:all
all: $(DEST_TXT_FILES)
$(DEST_TXT_FILES):
cp $< $@
txt/A.txt: a/A.txt
txt/B.txt: a/b/B.txt
txt/C.txt: a/b/c/C.txt
видно, что последние три строки являются формульными.
Есть ли способ переписать этот Makefile так, чтобы фиксированные целевые элементы DEST_TXT_FILES
могли зависеть от элементов EXTERNAL_TXT_FILES
, из которых они получены, без необходимости явновыписать их?
Для тестирования:
$ mkdir -p a/b/c txt && rm -f txt/* && touch a/A.txt a/b/B.txt a/b/c/C.txt && make
Я надеялся, что замена трех последних строк make-файла чем-то вроде этогобудет работать:
foreach (FILE, $(EXTERNAL_TXT_FILES), $(addprefix txt/, $(notdir $(FILE))) : $(FILE))