首页 > 解决方案 > Makefile $(eval $(call)) 函数

问题描述

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())

然后它运行良好

标签: foreachmakefileevalcall

解决方案


makeeval函数将您提供的文本评估为 makefile(需要 makefile sytnax)。

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

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

@echo this is a function

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


推荐阅读