我试图让一个顶级makefile在多个子文件夹中调用make。顶级有几个目标,重要的位如下所示:
MAKE_DIRS := $(dir $(wildcard apps/**/Makefile))
.PHONY: clean_apps apps $(MAKE_DIRS)
clean_apps: TARGET_INFO := clean
apps clean_aps: $(MAKE_DIRS)
$(MAKE_DIRS):
$(MAKE) -C $@ $(TARGET_INFO)
现在,当我独立调用目标时,这可以正常工作:
make apps; make clean_apps
但是,如果我使用以下命令在同一命令行上调用它们
make clean_apps apps
然后,应用程序目标只是无所事事。我想这与在调用之间没有改变的目录的依赖性有关,但我认为.PHONY命令可以避免这个问题......
我很高兴知道是否有更好的方法可以解决这个问题。
谢谢, 鲍勃
答案 0 :(得分:0)
这更简单:
SUBDIRS := $(dir $(shell find apps -name "Makefile"))
.PHONY: all clean
all clean:
$(foreach DIR, $(SUBDIRS), $(MAKE) $(MAKEFLAGS) -C $(DIR) $@;)