0

我正在尝试获取一个顶级 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 命令可以避免这个问题......

我很高兴知道是否有更好的方法来处理这个问题。

谢谢,鲍勃

4

1 回答 1

0

这是更简单的事情:

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

.PHONY: all clean

all clean:
    $(foreach DIR, $(SUBDIRS), $(MAKE) $(MAKEFLAGS) -C $(DIR) $@;)
于 2014-05-28T00:18:50.947 回答