Submakes没有重新运行不同的目标

时间:2014-05-26 20:41:04

标签: makefile gnu-make multiple-makefiles

我试图让一个顶级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命令可以避免这个问题......

我很高兴知道是否有更好的方法可以解决这个问题。

谢谢, 鲍勃

1 个答案:

答案 0 :(得分:0)

这更简单:

SUBDIRS :=  $(dir $(shell find apps -name "Makefile"))

.PHONY: all clean

all clean:
    $(foreach DIR, $(SUBDIRS), $(MAKE) $(MAKEFLAGS) -C $(DIR) $@;)