Android源码编译中的Makefile文件
1.和大多shell文件一样,makefile中的#表示注释,一般都是#加要注释的内容。
2.ifdef...endif,表示如果定义了变量。例如:
# Only use ANDROID_BUILD_SHELL to wrap around bash.ifdef ANDROID_BUILD_SHELLSHELL := $(ANDROID_BUILD_SHELL)elseSHELL := /bin/bashendif
3.函数调用,很像变量的使用,也是以“$”来标识的,其语法如下:
??? $( )
或是
??? ${ }
这里,就是函数名,make支持的函数不多。是函数的参数,参数间以逗号“,”分隔,而函数名和参数之间以“空格”分隔。函数调用以“$”开头,以圆括号或花括号把函数名和参数括起。感觉很像一个变量,是不是?函数中的参数可以使用变量,为了风格的统一,函数和变量的括号最好一样,如使用“$(subst a,b,$(x))”这样的形式,而不是“$(subst a,b,${x})”的形式。因为统一会更清楚,也会减少一些不必要的麻烦。
$(ANDROID_BUILD_SHELL),就是取得ANDROID_BUILD_SHELL的值。
4.a := b,将b的值赋给a。
5..SUFFIXES:是来定义或是删除后缀规则的。
.SUFFIXES: .hack .win把后缀.hack和.win加入后缀列表中的末尾。.SUFFIXES: # 删除默认的后缀.SUFFIXES: .c .o .h # 定义自己的后缀先清楚默认后缀,后定义自己的后缀列表。
6..DELETE_ON_ERROR
如果在Makefile中存在特殊目标“.DELETE_ON_ERROR”,make在执行过程中,如果规则的命令执行错误,将删除已经被修改的目标文件。