在Makefile中强制进行变量评估

时间:2015-12-10 03:34:09

标签: sed makefile

在我的一个Makefile中,变量接收由sed脚本确定的值:

VAR_SCRIPT:=`sed -n '/expression/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < file.h`

sed脚本会在file.h中找到合适的值。 它工作正常。稍后,此值用于创建版本化文件名。

但实际上,sed程序在创建VAR_SCRIPT时尚未评估。它始终保持脚本格式,并且仅在最后一刻进行评估。

这会导致Makefile的后续部分出现问题。通常,我希望稍后在另一个VAR_VALUE脚本中使用sed的结果,而不是脚本公式本身。

尝试通过以下方式传输sed脚本的值:

VAR_VALUE := $(VAR_SCRIPT)

仅传输脚本,而不是脚本的结果。

如何强制评估sed脚本?

编辑:找到一个解决方案:

VAR_VALUE := $(shell echo $(VAR_SCRIPT))

另见@Andrey建议

1 个答案:

答案 0 :(得分:1)

您可以尝试shell功能:

VARIABLE := $(shell command)

例如,请检查此Makefile(无标签):

C := sed -n 'p' <<< 'test'
V := $(shell $(C))
all: ; @echo $(V)