从Makefile中打印变量

rob*_*ntw 22 makefile

我的makefile中有以下代码:

S_RES=$(shell cat output)

echo -e "Serial result = \t" $(S_RES)
Run Code Online (Sandbox Code Playgroud)

基本上,我想将shell命令的输出存储cat output在S_RES变量中,然后将该变量回显到屏幕(前面有一些解释性文本).我也想在以后的程序中使用变量.我以为我已经按照各种StackOverflow问题中的说明进行了操作,但它似乎没有用.

Ise*_*ria 42

如果简单的空间,而不是转义序列\t是允许的,而你的makeGNU make3.81或更高,$(info)是可用的.
例如:

$(info Serial result = $(S_RES))
Run Code Online (Sandbox Code Playgroud)

如果你make的版本是3.80或更低,$(warning)可能会达到目的.但是,warning也会打印行号等.

编辑: 为了您的信息,abc我的GNU上的以下makefile输出使3.81.

A := $(shell echo abc)
$(info $(A))
Run Code Online (Sandbox Code Playgroud)

  • @robintw:绝对.Ise Wisteria所写的是"Make language",但是Make将规则中的*命令*传递给子shell,这些子shell使用了非常不同的语法.如果你试图在那里设置一个变量并在"程序后期"使用它,我怀疑你误解了makefile是如何工作的以及"后来"在那个环境中意味着什么.也许你可以编辑你的帖子来显示代码*in situ*并告诉我们"程序"是什么. (2认同)

小智 6

只是旁注

这将评估使用时间,这与使用$(A)的次数相同

A = something
Run Code Online (Sandbox Code Playgroud)

这将对解析时间进行求值,因此值的计算结果为一次

A := something
Run Code Online (Sandbox Code Playgroud)