【发布时间】:2012-12-26 16:55:24
【问题描述】:
我的 Makefile 中的一条规则将整个目录 (res/) 压缩到 ZIP 文件中。显然,当res/ 目录下的any 文件发生变化时,需要执行此规则。因此,我希望规则将该目录下的所有文件作为先决条件。如何执行此规则?
在 Bash with the globstar option enabled 中,您可以使用通配符模式 res/**/* 获取该目录中所有文件的列表。但是,如果您在 Makefile 中将其指定为先决条件,它似乎不起作用:
filename.jar: res/**/*
即使在touchres/ 中的文件之后,仍然会报告
make: `filename.jar' is up to date.
很明显它无法识别模式。
如果我将目录本身声明为先决条件:
filename.jar: res
然后当文件被修改时,Make 不会重新执行(我认为make 只查看目录本身的修改日期,只有在添加、删除或重命名直接子项时才会更改)。
【问题讨论】:
标签: makefile wildcard gnu-make glob