2010-06-22 89 views
1

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

一个= 1
B = 2
C = 3
X = FOO巴巴兹$(的foreach X,ABC,$$(值$(X)))qux
$(资讯$(X))

如果运行此生成的文件,它打印:
FOO酒吧巴兹$(值)$(b值)$(值c)qux

我d想知道如何扩展它,以便得到:
foo bar baz 1 2 3 qux

我可以做到以下几点:
$(EVAL X = $(X))

为了更贴近我想要的,但是这需要我再重新分配变量。另外,我对整个变量中的任何内容进行了“评估”,这可能不是我想要的。我希望能够做一些像$(展开X)并产生文本。

回答

1
X = $(foreach x, a b c, $($(x))) 
+0

对不起,我没有做出我的例子,我最终得到了一个包含“foo bar baz $(somevar)$(some-other-var)”之类的变量。 我想展开$(somevar)和$(some-other-var)。 我是/知道如何间接扩展变量引用时,这是一个变量包含。 – BitShifter 2010-06-22 22:08:06

+0

@BitShifter:我给了这个想法很多,我不知道该怎么做。我最好的猜测是使用SECONDEXPANSION(我的gmake版本没有),并且把'$(X)'作为虚拟规则的先决条件。如果这不起作用,那么可能会存在一些可怕的黑客行为,但我不知道它会是什么。 – Beta 2010-06-30 19:31:42