Makefile 使用文件中的依赖项生成
我想编写一个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
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 $@