2017-04-13 38 views
0

我有一個make目標看起來像這樣:如何在刪除文件或添加舊文件時運行制定目標?

WXICONS_TIMESTAMP = assets/fonts/.timestamp 

# compile icons 
$(WXICONS_TIMESTAMP): scripts/svg2font.js artifacts/icons/*.svg 
    $(NODE_BIN) $< 
    touch $(WXICONS_TIMESTAMP) 

即,它運行編譯目錄中的一堆.svg文件到一對夫婦的字體文件的腳本。

如果你修改這個目錄中的任何文件,那麼make目標被觸發,因爲.svg文件將比我的dumby .timestamp文件更新。但是,如果您將刪除.svg文件沒有任何反應,或者如果將.svg文件添加到具有比.timestamp文件更早的mtime的目錄中,則什麼都不會發生。

那麼如何在添加,刪除或修改文件時觸發目標?

回答

1

這是一個例子,有一個合理的目標取決於目錄而不是文件。當創建新文件,刪除現有文件或在該目錄中重命名文件時,將更新目錄的修改時間。

因此,如果列出包含.svg文件的目錄作爲時間戳目標的先決條件,則無論何時添加,刪除或更新該文件都將再次運行。

$(WXICONS_TIMESTAMP): scripts/svg2font.js artifacts/icons/. artifacts/icons/*.svg 
    $(NODE_BIN) $< 
    touch $(WXICONS_TIMESTAMP) 
+0

完美!不知道你能做到這一點。 – mpen

相關問題