2015-04-30 28 views
0

我有一個Makefile,它將構建shapefile作爲中間步驟。清理Make中的未提及的中間文件

.INTERMEDIATE : senate_boundaries.shp 
senate_boundaries.shp : Senate\ shape\ files.zip 
    unzip -j "$<" 

一個完整的shape文件帶有更多的不僅僅是一個.shp,也是一個.prj文件,.dbf文件,和一堆別人的。這些文件是在「參數化形狀files.zip」解壓縮時創建的。

這些其他文件永遠不是明確的目標或依賴項。

.INTERMEDIATE : senate_boundaries.prj senate_boundaries.dbf 

似乎沒有做任何事情。

我該如何告訴Make來清理這些其他文件?

+0

make不知道任何關於它們的信息(即使標記爲「INTERMEDIATE」),所以我不確定它應該從中刪除它們。什麼產生'.prj'和'.dbf'文件? –

+0

他們在zip文件中。 – fgregg

+0

我認爲你可以做的最好的事情是使用最後一段[此處](http://www.gnu.org/software/make/manual/make.html#Pattern-Examples)中描述的模式規則的特徵,然後使用'senate_boundarie%.shp senate_boundarie%.prj senate_boundarie%.dbf:Senate \ shape \ files.zip'這樣的東西應該能夠正確處理它們。 (儘管你真的應該考慮刪除壓縮文件名中的空格,使*真的*不適合文件名中的空格。) –

回答

1

您可以添加這樣的事情給你的食譜:

rm -f $(wildcard Senate\shape\*.prj) 

但是,這將只用於處理一個文件,你必須手動添加,每個擴展擺脫。

所以這樣的事情可能做的伎倆:

rm -f $(shell ls Senate\shape\ | grep -v .shp&) 

另一種選擇是解壓到一個臨時目錄,然後複製你想要出文件並刪除臨時目錄。