2011-05-17 66 views
21

我在我的生成文件以下代码:打印变量从内生成文件

S_RES=$(shell cat output) 

echo -e "Serial result = \t" $(S_RES) 

基本上,我想存储外壳命令cat output在S_RES变量的输出,然后该变量回声到屏幕(前面有一些解释性文字)。我也希望能够在我的程序中稍后使用该变量。我认为我遵循了各种StackOverflow问题中给出的指示,但它似乎不起作用。

回答

41

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

$(info Serial result = $(S_RES)) 

如果您make的版本是3.80或更低,$(warning)可能满足 目的。但是,warning也打印行号等。

编辑: 为了您的信息,在我的GNU下面的Makefile输出abc使3.81。

A := $(shell echo abc) 
$(info $(A)) 
+0

不幸的是,似乎没有工作。我得到'Serial result ='打印出来,但不是S_RES的值。我假设我首先正确设置了S_RES - 是对的吗? – robintw 2011-05-17 23:44:09

+0

你的'make''GNU-make'?如果是这样,那么这个版本是什么? 请参阅编辑。 – 2011-05-18 00:04:55

+0

我得到以下输出: 答:= ABC 化妆:A:命令未找到 化妆:*** [测试]错误127 而我化妆的版本是GNU让3.81 – robintw 2011-05-18 00:09:22

5

只是一个侧面说明

这个评估对使用时间,这是多次$(A)用于

A = something 

这个评价上分析时,这样的值评估一次

A := something