Makefile 删除文件或添加旧文件时如何运行Make target?
我有一个Makefile 删除文件或添加旧文件时如何运行Make target?,makefile,gnu-make,Makefile,Gnu Make,我有一个make目标,如下所示: WXICONS_TIMESTAMP = assets/fonts/.timestamp # compile icons $(WXICONS_TIMESTAMP): scripts/svg2font.js artifacts/icons/*.svg $(NODE_BIN) $< touch $(WXICONS_TIMESTAMP) WXICONS\u TIMESTAMP=assets/font/.TIMESTAMP #编译图标 $(WX
make
目标,如下所示:
WXICONS_TIMESTAMP = assets/fonts/.timestamp
# compile icons
$(WXICONS_TIMESTAMP): scripts/svg2font.js artifacts/icons/*.svg
$(NODE_BIN) $<
touch $(WXICONS_TIMESTAMP)
WXICONS\u TIMESTAMP=assets/font/.TIMESTAMP
#编译图标
$(WXICONS_TIMESTAMP):scripts/svg2font.js artifacts/icons/*.svg
$(NODE_BIN)$<
触摸$(WXICONS\u时间戳)
i、 例如,它运行一个脚本,将目录中的一组.svg
文件编译成两个字体文件
如果修改此目录中的任何文件,则会触发make目标,因为.svg文件将比dumby.timestamp
文件更新。但是,如果删除.svg
文件,或者将.svg文件添加到mtime早于.timestamp文件的目录中,则不会发生任何事情
那么,在添加、删除或修改文件时,如何触发目标呢?这是唯一一个让目标依赖于目录而不是文件的情况。创建新文件、删除现有文件或重命名该目录中的文件时,目录的修改时间将更新 因此,如果将包含
.svg
文件的目录列为时间戳目标的先决条件,则无论何时添加、删除或更新文件,该规则都将再次运行
$(WXICONS_TIMESTAMP): scripts/svg2font.js artifacts/icons/. artifacts/icons/*.svg
$(NODE_BIN) $<
touch $(WXICONS_TIMESTAMP)
$(WXICONS\u时间戳):scripts/svg2font.js artifacts/icons/。工件/图标/*.svg
$(NODE_BIN)$<
触摸$(WXICONS\u时间戳)
完美!我不知道你能做到。