我有一个目录 (root_dir
),其中包含许多子目录 (subdir1, subdir2, ...
)。
我想使用放置在其中的 Makefile 在 root_dir
中的每个目录中运行 make
。
(显然假设每个 subdir...
都有自己的 Makefile)。
所以本质上有两个问题:
- 如何(自动)获取 Makefile 中的目录列表?
- 如何为 make 文件中的每个目录运行
make
?
据我所知,为了在特定目录中运行 make
,我需要执行以下操作:
$(MAKE) -C subdir
最佳答案
在单个配方的 for 循环内执行子 make 会出现各种问题。做多个子目录的最好方法是这样的:
SUBDIRS := $(wildcard */.)
all: $(SUBDIRS)
$(SUBDIRS):
$(MAKE) -C $@
.PHONY: all $(SUBDIRS)
(只是指出这是 GNU make 特定的;您没有提到对您正在使用的 make 版本的任何限制)。
预计到达时间这是一个支持多个顶级目标的版本。
TOPTARGETS := all clean
SUBDIRS := $(wildcard */.)
$(TOPTARGETS): $(SUBDIRS)
$(SUBDIRS):
$(MAKE) -C $@ $(MAKECMDGOALS)
.PHONY: $(TOPTARGETS) $(SUBDIRS)
关于makefile - 在每个子目录中运行make,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17834582/