我想这在某种程度上是有道理的,但我无法理解为什么:在下面的代码中,我得到两个警告(注意原始代码是缩进的标签):
define variable-definition
ifndef $1
$(warning $1 is undefined)
else
$(warning $1 is defined)
endif
endef
Run Code Online (Sandbox Code Playgroud)
PS:我想检查名称传递的变量是否$1存在,而不是是否$1传递.
PPS:Dedenting整个事情没有帮助.
Beta对根本原因的分析是正确的,你没有逃脱你$的$(warning)电话.这是我如何解决它:
define variable-def
ifndef $1
$$(warning $1 is undefined)
else
$$(warning $1 is defined)
endif
endef
FOO=bar
$(eval $(call variable-def,FOO))
Run Code Online (Sandbox Code Playgroud)
请注意,我使用空格缩进,而不是制表符.如果您使用制表符缩进,则会收到以下错误:*** commands commence before first target. Stop.
这使用GNUisms,但你的样本也是如此(我认为).