Make создает «цели» из «предпосылок». В вашем случае MY_FILES
содержит предпосылки для создания целей (ссылки). Правило для одного файла может выглядеть так:
file.txt: $(SOME_PATH)/file.txt
ln -s $<
Вам нужно несколько файлов, и в этом случае мы можем использовать это шаблонное правило:
%.txt: $(SOME_PATH)/%.txt
ln -s $<
Теперь вы можете создавать ссылки с помощью команд make:
make file.txt
make otherfile.txt
Наконец, мы рассмотрим функцию wildcard
, чтобы получить все файлы, и функцию notdir
, чтобы получить имена ссылок из имен файлов. Следующее правило распечатает все текстовые файлы и зависит от всех файлов в SOME_PATH, связанных с текущим рабочим каталогом:
MY_FILES := $(notdir $(wildcard $(SOME_PATH)/*.txt))
cat: $(MY_FILES)
cat $^
%.txt: $(SOME_PATH)/%.txt
ln -s $<