2012-02-10 37 views
2

我想写一个Makefile来读取文件list.txt并生成包含内容的result.tar。如果list.txt文件或其指向的任何文件发生更改,则应重建result.tar。我如何在Makefile中表达这一点?最近的我来了:使用文件依赖关系

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

但是这省略了对list.txt内容的依赖关系。

回答

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 [email protected] 
+1

如果xargs的调用焦油这将打破不止一次。每个调用都会覆盖tar文件。只要删除xargs使其正常工作。 – 2012-02-14 01:55:13