Makefile提取while的值
我在Makefile中做了一个while循环,但我不知道如何“提取/更新”条件变量的值:Makefile提取while的值,makefile,while-loop,Makefile,While Loop,我在Makefile中做了一个while循环,但我不知道如何“提取/更新”条件变量的值: i := 0 .PHONY: syslog syslog: $Q i=$(i) ; \ while [ $${i} -le 7 ] ; do \ if grep -q local$$i.* "$(SYSLOG)" ; then i=`expr $$i + 1` ; else printf "\n\!myapp\nlocal$$i.*\t\t\t\t\t-/v
i := 0
.PHONY: syslog
syslog:
$Q i=$(i) ; \
while [ $${i} -le 7 ] ; do \
if grep -q local$$i.* "$(SYSLOG)" ; then i=`expr $$i + 1` ; else printf "\n\!myapp\nlocal$$i.*\t\t\t\t\t-/var/log/myapp.log\n" >> $(SYSLOG) && i=`expr $$i` && break ; fi ; \
done ; \
true ; \
$Q echo "$i"
我想知道,如果循环在I=2时执行printf,例如,在echo$I返回2后,它返回0,因此我无法正确提取更新的值…您不能直接执行您的请求。首次解析makefile时,会展开makefile变量。然后,运行配方,并在该点展开配方变量,因此它们不会影响已展开的makefile变量
可以通过$make i=${i}将扩展的$${i}传递给子make,或者您可以尝试通过recipe i:=$shell echo 2之外的shell命令设置$i:=$shell echo 2谢谢@john最后,我将以其他方式进行设置