生成文件 $(eval $(call)) 函数

Makefile $(eval $(call)) function

makefile 中的简单代码

define fun
@echo this is function
endef

78 all:
79   $(foreach objdir, $(OBJECTDIRS), $(eval $(call fun)))

错误消息是: Makefile:79:* 缺少分隔符。停止。**

注意:我已经检查了 $(OBJECTDIRS) 不为空并且 $(oobjdir) 也是

如果我将代码更改为流畅的线条:

define fun
@echo this is function
endef

all:
 $(call fun())

那就运行好

make eval 函数评估您提供的文本 作为 makefile(期望 makefile sytnax)。

文本 @echo this is a function 不是生成文件。

换句话说,如果您创建一个 Makefile 并将文本放入其中:

@echo this is a function

(就其本身而言,没有别的)和你 运行 make 在那个 makefile 上,你会得到同样的 missing separator 错误。