Makefile 使用文件中的依赖项生成

Makefile 使用文件中的依赖项生成,makefile,Makefile,我想编写一个Makefile,它读取一个文件list.txt,并生成包含内容的result.tar。如果list.txt文件或其指向的任何文件发生更改,则应重新生成result.tar。我如何在Makefile中表达这一点?最接近我的是: result.tar : list.txt cat list.txt | xargs tar -cf result.tar 但这忽略了对list.txt内容的依赖性,我认为应该有这样的内容: result.tar : list.txt $(shell

我想编写一个Makefile,它读取一个文件
list.txt
,并生成包含内容的
result.tar
。如果
list.txt
文件或其指向的任何文件发生更改,则应重新生成
result.tar
。我如何在Makefile中表达这一点?最接近我的是:

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

但这忽略了对
list.txt

内容的依赖性,我认为应该有这样的内容:

result.tar : list.txt $(shell cat list.txt) cat list.txt | xargs tar -cf result.tar
如果xargs不止一次调用tar,这将中断。每次调用都会覆盖tar文件。只需移除xargs即可使其正常工作。 LIST_FILE := list.txt result.tar : $(LIST_FILE) $(shell cat $(LIST_FILE)) cat $< | xargs tar -cf $@