假设我具有以下目录结构,并且具有根节点:
/root/
Makefile
branch1/
branch2/
.../
而且我写了以下最小的makefile:
branches=$(shell find * -maxdepth 1 -type d -printf "%f "}
%:
-${MAKE} ${MAKECMDGOALS} -C branch1
-${MAKE} ${MAKECMDGOALS} -C branch2
...
已经准备好使用branches
变量动态执行此中继,并尝试了几种通配符和后代规则变体而没有成功,我的问题是:如何从外部范围捕获any命令目标(例如我现在正在执行),并对find
表达式检测到的每个文件执行make Relay?
使用伪代码(不适用于我的make
版本,这是Cygwin上的最新版本):
branches=$(shell find * -maxdepth 1 -type d -printf "%f "} branch-%: -${MAKE} ${MAKECMDGOALS} -C $* %: ${foreach branch,${branches}, branch-${branch}}
与原始makefile不同,这不起作用。但是,似乎应该如此。有办法吗?
Make的并行性将由我的伪代码方法(如果可行)使用-j
选项以指数扇形散开,而我使用的第一种方法不会破坏并行性。
但是,理想情况下,此makefile应该能够为分支列表中的每个文件动态执行一个make relay。但是,我目前看不到一种动态实现此方法的方法。
假设我具有以下目录结构,并带有一个根节点:/ root / Makefile branch1 / branch2 / ... /我编写了以下最小的makefile:branch = $(shell find * -maxdepth 1 -...
首先,我不确定为什么要使用复杂的shell
函数;为什么不只是: