目标变量的问题

  • 目标变量是局部变量只在作用范围内有效,不会影响全局变量值。
  • 目标作用范围的划分是tab键,不能是空格。
  • target: prerequisite、ifeq、变量赋值等等,前面不能有tab。

那么这里就出现一个问题,就是目标下使用ifeq判断目标变量时是找不到目标变量的。

VAR=global

all:
\t$(info TAB VAR=$(VAR))
  $(info VAR=$(VAR))

test: VAR=local
test: all
$ make
VAR=global
TAB VAR=global
make: “all”已是最新。

$ make test
VAR=global
TAB VAR=local
make: 对“test”无需做任何事。

暂时没有太好的解决办法,只能规避这个场景的出现。