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

7

我是一名学习如何编写Makefile的人。我发现了.VARIABLES变量,它包含了Makefile中所有有效的变量。

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

test:
    @echo "${.VARIABLES}" | tr ' ' '\n'

但我不知道该如何设置它们的值。有人可以教我如何做吗?


1
“how to should the values” 是什么意思? - ooga
1
对于变量i在.VARIABLES中,执行echo $i命令。 - Varvarigos Emmanouil
@V_Maenolis 抱歉,你的解决方案对我不起作用。 - enchanter
1个回答

10

如果您正在使用GNU Make,则可以像这样巧妙地结合foreach和.VARIABLES:

test:
    $(foreach var,$(.VARIABLES),$(info $(var) = $($(var))))

这个不需要使用 eval。在这里没有它也可以正常工作。 - Etan Reisner
@EtanReisner 谢谢,你是正确的。回答已更新。 - harmic
@harmic 谢谢,这正是我需要的。但是关于你的回答还有一个问题。你使用了“info”,它可以工作,但为什么“echo”不能工作呢? - enchanter
@enchanter 你可以使用echo,但需要将其放在foreach循环之外,像这样:@echo -e $(foreach var,$(.VARIABLES),"$(var)=$($(var))\n")。$(foreach...)将循环中的所有值连接起来,然后执行结果。但是info的优点在于不需要生成子shell。 - harmic
当您设置了MAKEFLAGS += --no-builtin-rules时,这将无法工作。 - Tedi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接