1 eval的返回值是空字符串,因此它可以用于Makefile的任何位置而不引起错误
2 eval函数的作用效果
生成Makefile的动态部分,即eval用于增加Makefile的构成部分。
也就是说,经过eval扩展之后的text部分,完全可以看成是Makefile的一部分,在make的时候,由make自己去解析执行,执行的过程完全等同于Makefile的其它静态部分。
3 eval内部嵌套一个函数的话,eval做了什么
首先是被嵌套的内部函数的扩展,在其扩展的结果上eval工作。
3.1 eval的expand
即普通的变量的扩展,对于双$$,去掉一个$。
3.2 eval将expand后得到的text当成是makefile的一部分
比如rules、比如变量赋值等等。
这样的好处是很显然的,Makefile就不是静态不变的了,而是动态的,可以生成的。
4 eval、call、define是完美组合,用于定义Makefile的动态部分