我有一个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文件添加到mtime早于.timestamp文件的目录中,则没有任何反应。
那么在添加,删除或修改文件时如何触发目标?
答案 0 :(得分:1)
这是目标依赖于目录而不是文件的唯一合理时间之一。当创建新文件,删除现有文件或在该目录中重命名文件时,将更新目录的修改时间。
因此,如果列出包含.svg
文件的目录作为时间戳目标的先决条件,则无论何时添加,删除或更新该文件,该规则都将再次运行。
$(WXICONS_TIMESTAMP): scripts/svg2font.js artifacts/icons/. artifacts/icons/*.svg
$(NODE_BIN) $<
touch $(WXICONS_TIMESTAMP)