Makefile中的这一行是什么意思?

What does this line in Makefile mean?

本文关键字:一行 是什么 意思 Makefile      更新时间:2023-10-16

我对makefile很陌生。我想学习它。有人能解释一下makefile中的这一行到底是什么意思吗?

(call makelib_export_shell_noexport_varlist,$(filter gBRD_NEXUS_VARS__%,$(.VARIABLES))) $(call makelib_export_shell_noexport_varlist,$(filter gBRD_DIRECTFB_VARS__%,$(.VARIABLES)))make -C ${b-mk-dir} c-export | grep '^[ t]*export ' > ${b-mk-dir}/b-flags-environ.sh

首先,您缺少示例中的初始$。其次,如果没有看到更多的makefile,就不可能确切地知道它在做什么。

$(call ...)函数调用自定义函数。在这种情况下,每个调用都调用用户定义的函数makelib_export_shell_noexport_varlist;你必须去找到它,看看它到底是做什么的。该函数被传递一个参数,该参数由匹配模式gBRD_NEXUS_VARS__%的所有make变量组成。假设该函数将展开为一个字符串,为shell设置这些变量。

$(call ...)的下一次调用相同,但是对于一组不同的变量。

然后,运行命令make -C ...,输出通过管道传输到grep,并将结果写入文件b-flags-environ.sh。注意,这可能是不正确的;实际上,您永远不会想要在makefile中直接调用make:您想要运行$(MAKE)