我想写一个Makefile,它读取文件list.txt
并生成包含内容的result.tar
。如果list.txt
文件或其指向的任何文件发生更改,则应重建result.tar
。我怎样才能在Makefile中表达这个?我最接近的是:
result.tar : list.txt
cat list.txt | xargs tar -cf result.tar
但这省略了对list.txt
。
答案 0 :(得分:5)
我认为应该是这样的:
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 $@