5
eval函数很特别:它允许您定义新的 makefile的结构是不恒定的;这是 评估其他变量和函数的结果。扩展函数eval 的参数,然后将该扩展的结果解析为 makefile语法。
认识到eval参数被扩展两次是很重要的; 首先通过eval函数,然后当它们被解析为makefile语法时,扩展的结果是 。这意味着当 使用eval时,您可能需要为“$”字符提供额外级别的转义级别。
“扩展两次”使我困惑。
例如,我创建了一个makefile:
define func
tmp = $(OBJPATH)/$(strip $1)
objs += $$(tmp)
$$(tmp) : $2
gcc $$^ -o [email protected]
endef
all : foo
$(eval $(call func, foo, 1.c))
如何eval函数进行扩展?
“eval函数将如何扩展?”你试过了吗? – Beta