是否可以从父目录执行make clean,同时递归清理所有子目录,而无需在每个子目录中包含一个makefile文件?
例如,目前在我的Makefile中,我有类似以下内容的东西:
SUBDIRS = src, src1
.PHONY: clean subdirs $(SUBDIRS)
clean: $(SUBDIRS)
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c
$(SUBDIRS):
$(MAKE) -C $(SUBDIRS) clean
然而,这需要我在src和src1文件夹中都有Makefile文件。否则,我会收到错误信息。No rule to make target clean
既然我只想在每个子目录中运行命令"rm -rf *.o ~ core .depend ..cmd *.ko *.mod.c",那么在每个子目录中都包含有相同的clean命令似乎是多余的。是否有简便的方法可以使得相同的clean命令在每个子目录中都能运行?
$(SUBDIRS)
上循环并手动在每个目录中运行rm
。 - Etan Reisnerclean.mk
makefile并将其包含进来),那么我认为你可以在该配方中使用$(MAKE) -C $@ -f clean.mk clean
。 (注意使用$@
而不是$(SUBDIRS)
。-C
只接受单个参数而不是列表。) - Etan Reisner