在求值而不是赋值时扩展变量

发布于 2024-10-16 02:43:35 字数 287 浏览 4 评论 0原文

我在使用一些 make 变量时遇到了问题,我有这样的问题:

SUFFIX := raw

FILENAME = name.$(SUFFIX)

...
...

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

echo $(FILENAME)

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

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

I am having trouble with some make variables, I have something like this:

SUFFIX := raw

FILENAME = name.$(SUFFIX)

...
...

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

echo $(FILENAME)

But FILENAME has the original raw suffix value (name.raw), not the more recently assigned "img" value.

Am I missing something simple here? Using latest released gmake.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

_蜘蛛 2024-10-23 02:43:35

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

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

编辑:
好吧,现在我们知道 FILENAME 在某处被简单地定义(即使用 :=)。因此,请尝试跟踪包含链,并找出发生这种情况的位置。这里有一个技巧:将这些行放入您感兴趣的任何 makefile 中

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

I cannot reproduce this error with a series of includes; there is something else involved. I suggest you try the following and tell us the results:

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

EDIT:
All right, now we know that FILENAME is being defined simply (i.e. with :=) somewhere. So try to trace the include chain, and find out where that happens. Here's a trick: put these lines in any makefile you're interested in

ifeq ($(flavor FILENAME),simple)
  $(warning FILENAME is simply defined)
endif
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文