使用Make是一种依赖目录内容的好方法。
本质上,我有一些生成的代码,这些代码取决于应用程序代码。仅当目录的内容更改时,才需要更改生成的代码,如果其中的文件更改了内容,则不必更改。因此,如果文件被删除,添加或重命名,则需要运行规则。
我首先想到的是生成目录的文本文件列表,并将其与最后一个列表进行比较。更改意味着重新运行构建。我想我必须将generate和diff部分传递给bash脚本。
我希望他们的无限智能可能会有更简单的解决方案。
最佳答案
感谢gjulianm,他使我走上了正轨。他的解决方案非常适合单个目录。
为了使它递归工作,我做了以下工作。
ASSET_DIRS = $(shell find ../../assets/ -type d)
ASSET_FILES = $(shell find ../../assets/ -type f -name '*')
codegen: ../../assets/ $(ASSET_DIRS) $(ASSET_FILES)
generate-my-code
现在看来,对目录或文件的任何更改(添加,删除,重命名,修改)都将导致该规则运行。这里的文件名可能存在一些问题(空格可能会引起问题)。
关于directory - Makefile规则取决于目录内容的更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25005637/