变量定义*和*undefined

l0b*_*0b0 6 makefile

我想这在某种程度上是有道理的,但我无法理解为什么:在下面的代码中,我得到两个警告(注意原始代码是缩进的标签):

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整个事情没有帮助.

Jac*_*lly 9

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,但你的样本也是如此(我认为).