Makefile扩展变量

Makefile扩展变量,makefile,gnu-make,Makefile,Gnu Make,我想对可能包含对其他变量引用的变量执行扩展。我将用一个例子来说明: 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

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

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))

为了接近我想要的,但是这需要我重新分配变量。另外,我正在评估整个变量中可能不是我想要的东西。我希望能够执行类似于
$(扩展X)
的操作,并获得结果文本。

很抱歉,我的示例没有完全正确,我最终得到了一个包含类似“foo-bar-baz$(somevar)$(someothervar)”的变量。我想扩展$(somevar)和$(someothervar)。我知道如何间接扩展变量引用,而这正是变量所包含的全部内容。@BitShifter:我对此做了很多思考,但我不知道如何做。我的最佳猜测是使用SECONDEXPANSION(我的gmake版本没有),并将
$(X)
作为伪规则的先决条件。如果这不起作用,可能仍然存在一些可怕的黑客会这样做,但我不知道它可能是什么。对不起,我没有完全正确地说明我的示例,我最终得到了一个包含类似“foo bar baz$(somevar)$(someother var)”的变量。我想扩展$(somevar)和$(someothervar)。我知道如何间接扩展变量引用,而这正是变量所包含的全部内容。@BitShifter:我对此做了很多思考,但我不知道如何做。我的最佳猜测是使用SECONDEXPANSION(我的gmake版本没有),并将
$(X)
作为伪规则的先决条件。如果这不起作用,可能仍然存在一些可怕的黑客会这样做,但我不知道它可能是什么。请你澄清你想要什么,并提供一个最低限度的工作示例。你在这里的帖子和下面的答案下的评论很不清楚。请你澄清一下你想要什么,并提供一个简单的工作示例。这是非常不清楚,从你张贴在这里和评论下面的答案。
X = $(foreach x, a b c, $($(x)))