Сделать с зависимостями из файла

Я хочу написать Makefile, который читает файл list.txt и создает result.tar содержащий содержимое. Если есть изменения в файле list.txt или в любом из файлов, на которые он указывает, тогда result.tar следует перестроить. Как я могу выразить это в Makefile? Ближайший я пришел:

result.tar : list.txt
 cat list.txt | xargs tar -cf result.tar

Но это исключает зависимость от содержимого list.txt.

1 ответ

Я думаю, что должно быть что-то вроде этого:

result.tar : list.txt $(shell cat list.txt)
 cat list.txt | xargs tar -cf result.tar

Или, немного лучше (извлечение list.txt в переменную и использование автоматических переменных):

LIST_FILE := list.txt
result.tar : $(LIST_FILE) $(shell cat $(LIST_FILE))
 cat $< | xargs tar -cf $@

licensed under cc by-sa 3.0 with attribution.