我的 Makefile 中的一条规则将整个目录 ( res/
) 压缩到 ZIP 文件中。显然,当目录下的任何文件res/
发生变化时,都需要执行此规则。因此,我希望规则将该目录下的所有文件作为先决条件。我该如何执行此规则?
在启用该globstar
选项的Bash中,您可以使用通配符模式获取该目录中所有文件的列表res/**/*
。但是,如果您在 Makefile 中将其指定为先决条件,它似乎不起作用:
filename.jar: res/**/*
即使在touch
ing 中输入文件后res/
,Make 仍然会报告
make: `filename.jar' is up to date.
很明显,它没有识别出这种模式。
如果我将目录本身声明为先决条件:
filename.jar: res
那么 Make 在文件被修改时不会重新执行(我认为make
只查看目录本身的修改日期,只有在添加、删除或重命名直接子项时才会更改)。