在我的一个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建议
答案 0 :(得分:1)
您可以尝试shell
功能:
VARIABLE := $(shell command)
例如,请检查此Makefile
(无标签):
C := sed -n 'p' <<< 'test'
V := $(shell $(C))
all: ; @echo $(V)