上QQ阅读APP看书,第一时间看更新
1.2.4 Makefile常用函数
1.Makefile函数语法
在Makefile中,函数的调用和变量的调用类似,都是使用“$”进行标识。语法如下:
$(函数名 函数的参数) ${函数名 函数的参数}
函数名与函数的参数之间使用空格隔开,而函数的参数间使用逗号进行分隔。以上两种写法都是可以的,但是为了风格统一,请不要两者进行混合使用。
2.shell函数
make可以使用shell函数和外部通信。shell函数本身的返回值是其参数的执行结果,没有进行任何处理,对结果的处理是由 make 进行的。当对函数的引用出现在规则的命令行中,命令行在执行时函数才被展开。展开时函数参数(shell命令)的执行是在另外一个shell进程中完成的,因此需要对出现在规则命令行的多级“shell”函数引用需要谨慎处理,否则会影响效率(每一级的“shell”函数的参数都会有各自的shell进程)。
建立一个测试程序,Makefile的内容:
zhu := $(shell cat func) all: @ echo $(zhu)
Func文件中的内容:
juxst zhuzhaoqi
执行完成Makefile之后:
zhuzhaoqi@zhuzhaoqi-desktop:~/u-boot/Makefile/shellfunction$ make juxst zhuzhaoqi
在U-Boot和Linux内核源码中将会大量使用到shell函数。
3.subst函数
subst函数是字符串替换函数,语法为:
$(subst 被替换字串 替换字串 替换操作字符串)
执行subst函数之后,返回的是执行替换操作之后的字符串。如下:
name := zhu zhaoqi Alphabet_befor := z Alphabet_after := Z Name := $(subst $(Alphabet_befor), $(Alphabet_after), $(name)) all: echo $(Name)
执行上面的Makefile,输出结果为:
echo Zhu Zhaoqi Zhu Zhaoqi
即将“z”替换成了“Z”。
4.dir函数
dir函数作用为取出该文件的目录,其语法为:
$(dir 文件名称)
执行该函数之后返回文件目录部分。
Makefile中常用函数较多,笔者就不一一例举了,读者可参考相关书籍进行深入了解。
本节配套视频位于光盘中“嵌入式 Linux 开发实用教程视频”目录下第一章 02 课(Makefile)。