【问题标题】:Makefile expanding variablesMakefile 扩展变量
【发布时间】:2010-06-22 20:57:22
【问题描述】:

我想对可能包含对其他变量的引用的变量执行扩展。我用一个例子来说明:

a = 1
b = 2
c = 3
X = foo bar baz $(foreach x, a b c, $$(value $(x))) qux
$(info $(X))

如果你运行这个 makefile,它会打印:

foo bar baz $(value a) $(value b) $(value c) qux

我想知道如何扩展它以便得到:

foo bar baz 1 2 3 qux

我可以做到以下几点:

$(eval X = $(X))

为了接近我想要的,但这需要我再次重新分配变量。另外,我evaling 可能不是我想要的整个变量中的任何内容。我希望能够执行$(expand X) 之类的操作并获得结果文本。

【问题讨论】:

  • 能否请您阐明您想要什么并提供一个最小的工作示例。您在这里发帖并在下面的答案下发表评论非常不清楚。

标签: makefile gnu-make


【解决方案1】:
X = $(foreach x, a b c, $($(x)))

【讨论】:

  • 对不起,我的例子没有完全正确,我最终得到了一个包含“foo bar baz $(somevar) $(some-other-var)”之类的变量。我想扩展 $(somevar) 和 $(some-other-var)。我知道/知道如何在变量包含的所有内容中间接扩展变量引用。
  • @BitShifter:我已经考虑了很多,但我不知道该怎么做。我最好的猜测是使用 SECONDEPANSION(我的 gmake 版本没有)并将$(X) 作为虚拟规则的先决条件。如果这不起作用,可能仍然存在一些可怕的黑客可以做到这一点,但我不知道它可能是什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多