在评估而非分配时扩展变量

时间:2011-02-04 20:56:56

标签: makefile gnu-make

我遇到一些make变量有问题,我有这样的事情:

SUFFIX := raw

FILENAME = name.$(SUFFIX)

...
...

#much later, in a different makefile far away:
SUFFIX := img

echo $(FILENAME)

但是FILENAME具有原始的原始后缀值(name.raw),而不是最近分配的“img”值。

我在这里错过了一些简单的东西吗?使用最新发布的gmake。

1 个答案:

答案 0 :(得分:0)

我无法通过一系列包含重现此错误;还有其他事情涉及。我建议你尝试以下方法并告诉我们结果:

@echo filename: $(FILENAME)
@echo origin: $(origin FILENAME)
@echo flavor: $(flavor FILENAME)

修改:
好了,现在我们知道FILENAME在某处被简单地定义(即用:=)。因此,尝试跟踪包含链,并找出发生的位置。这是一个技巧:把这些行放在你感兴趣的任何makefile中

ifeq ($(flavor FILENAME),simple)
  $(warning FILENAME is simply defined)
endif