我有许多子目录,里面有Makefile,我想要一个“主”Makefile,它基本上调用这些目录中的Makefiles:
Makefile
foo/Makefile
bar/Makefile因此,在根目录中键入make foo等同于cd foo && make。我可以编写简单的Makefile来接受这一点:
foo:
cd foo && make
bar:
cd bar && make但我不想列出这些子目录,所以我可以使用Makefile添加新目录,而不必修改"master“Makefile。
发布于 2016-05-01 03:01:00
我认为make可能不是解决这个特定问题的最佳工具。为什么不是shell脚本呢?
#!/bin/sh
cd $1 && make如果你真的决定只用make来做这件事,你可以使用这样的makefile:
DIRS=$(patsubst %/,%,$(wildcard */))
.PHONY: $(DIRS)
$(DIRS):
@cd $@ && $(MAKE)发布于 2016-05-01 09:22:57
我想你想要的东西是这样的:
subdirs := $(shell find * -name Makefile | sed /\/Makefile$//)
$(subdirs):
$(MAKE) -C $@以下是几个简单的要点:
make。使用makefile instead.$(MAKE) -C dir和cd dir && make$(MAKE)文件保证会精确到下一级,使用ls */Makefile代替find * -name Makefile。发布的解决方案将在子目录中找到所有makefile,这可能不是您想要的。https://stackoverflow.com/questions/36958629
复制相似问题