作为构建过程的一部分,我需要使用 m4 处理一些文件。这些文件具有“.in”扩展名,不仅位于顶级目录中,还位于子目录中。我使用 find 找到它们并在 shell 循环中处理它们。
是否有一些 makefile 语法魔术来编写更简单的规则来处理它们,将输出保存到与输入文件位于同一目录中的文件中(去掉了“.in”扩展名)?
这就是我现在在我的 makefile 中的内容:
PROCESS_FILES=$(shell find . -name \*.in)
WORK_FILES=$(subst .in,,$(PROCESS_FILES))
$(WORK_FILES): $(PROCESS_FILES)
for file in $(PROCESS_FILES); \
do \
m4 $$file > $${file%.*};\
done