如何显示Makefile中所有变量的值

如何显示Makefile中所有变量的值,makefile,Makefile,我正在学习如何编写Makefile。我找到了.VARIABLES变量,它保存Makefile中所有有效的变量 我可以使用如下命令检查变量的名称: test: @echo "${.VARIABLES}" | tr ' ' '\n' test: $(foreach var,$(.VARIABLES),$(info $(var) = $($(var)))) 但我不知道该如何理解他们的价值观。有人能教我怎么做吗?如果您使用的是GNU Make,那么您可以使用foreach和变量的巧妙

我正在学习如何编写Makefile。我找到了.VARIABLES变量,它保存Makefile中所有有效的变量

我可以使用如下命令检查变量的名称:

test:
    @echo "${.VARIABLES}" | tr ' ' '\n'
test:
    $(foreach var,$(.VARIABLES),$(info $(var) = $($(var))))

但我不知道该如何理解他们的价值观。有人能教我怎么做吗?

如果您使用的是GNU Make,那么您可以使用foreach和变量的巧妙组合。如下所示:

test:
    @echo "${.VARIABLES}" | tr ' ' '\n'
test:
    $(foreach var,$(.VARIABLES),$(info $(var) = $($(var))))

你所说的“如何计算值”是什么意思?对于i in.变量;不要重复$i;完成@V_Maenolis抱歉,你的解决方案对我不起作用。你不需要评估。这里没有这个,它很好用。@EtanReisner谢谢,你说得对。答复updated@harmic谢谢,这就是我需要的。关于你的答案,还有一个问题。您可以使用“info”,它可以工作,但为什么“echo”不工作?@enchanter您可以使用echo,但您需要将其置于foreach循环之外,如下所示:
@echo-e$(foreach var,$(.VARIABLES),“$(var)=$($(var))\n”)
$(foreach…)连接循环中的所有值,然后执行结果。但是info的优点是不需要生成子shell。当您有MAKEFLAGS+=--没有内置规则时,这不起作用