这是我的制作配方,我传递的是nonle值*,虽然bamboo_nonle_password变量有密码,但功能仍然失败
JSON.stringify(myObj);
答案 0 :(得分:0)
你疯了:)
Make 会在想要执行之前扩展配方。
此时 make 知道%
对应的内容,
因此可以确保$*
设置得恰当。
不幸的是,在读取makefile时评估ifndef
... endif
对,
不是随着配方的扩展。
这表明了答案:
使用宏。
可能是$(origin …)
或$(flavor …)
,例如
validatevar.%:
@echo
$(if $(filter undefined,$(origin bamboo_$*_password)),@echo "Bamboo variable bamboo_$*_password is undefined")
$(if $(filter undefined,$(origin bamboo_$*_password)),exit 1)
当然,你可以稍微整理一下。 也许:
die-if-undefined = $(if $(filter undefined,$(origin $1)),$(error "$1" is undefined))
validatevar.%:
$(call die-if-undefined,bamboo_$*_password)
$(call die-if-undefined,bamboo_$*_server)
@echo
@echo
有两点需要注意:
$(error)
断言的位置并不重要。
我把它们放在了最顶层。ifndef
还会检测空变量以及未定义的变量。您可能希望调整die-if-undefined
以考虑到这一点(并将其重命名为die-if-empty
)。(如果 make 只接受--error-undefined-variables
参数,这将会更加轻松,
只是为了匹配现有的--warn-undefined-variables
参数。)