2012-02-10 39 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