在这个项目中,顶级规则如下所示:
all:
for l in $(LIBDIRS); do $(MAKE) -C $$l all; done如果我运行make -jx,每个目录中的文件都是并行编译的,但是由于这个bash循环,在当前库中完成所有操作之前,make不会移动到下一个库中的文件中。改变循环以使其调用真正并行的最佳方法是什么?我只使用gnumake,所以gnu扩展很好。
* Edit *作为旁白,我正在尝试这样的东西
ALL_DEPENDENCY = $(foreach l, $(LIBDIRS), $(l).PHONY_LIB_RULE)
.PHONY: $(ALL_DEPENDENCY)
%.PHONY_LIB_RULE:
$(MAKE) --no-print-directory -C $(patsubst %.PHONY_LIB_RULE,%,$@) all
all: $(ALL_DEPENDENCY)但这些规则并没有被绊倒。
发布于 2013-12-06 23:19:35
您可以检查此答案,以获得如何更正确地执行此操作的示例:makefile: foreach "make -C" call
https://stackoverflow.com/questions/20435150
复制相似问题