【发布时间】:2017-04-11 09:20:19
【问题描述】:
我正在尝试使用 GNU make 的 SECONDEPANSION(使用 3.81、3.80 和更早版本不支持 SECONDEPANSION),如 documentation 中所述,通过隐式规则在目标层次结构中递归。层次结构由宏/变量定义:
.SECONDEXPANSION :
top00.subblocks := mid00 mid01
mid00.subblocks := bottom00
wanted : top00.recurse ;
works_but_not_wanted : top00.onelevel ;
%.recurse : %.report $$(addsuffix .recurse,$$($$*.subblocks)) ;
%.onelevel : %.report $$(addsuffix .report,$$($$*.subblocks)) ;
%.report :
@echo REPORT: $*
如果我尝试make wanted,它会给出:
make: *** No rule to make target `top00.recurse', needed by `wanted'. Stop.
如果我尝试make works_but_not_wanted,它会给出:
REPORT: top00
REPORT: mid00
REPORT: mid01
这不是我想要的,因为它没有报告 bottom00,出于显而易见的原因只会递归下降一级。但是目标wanted 失败了。似乎 GNU make 在递归行为方面遇到了问题。
有什么建议吗?
【问题讨论】: