Android源码编译中的Makefile文件

1.和大多shell文件一样,makefile中的#表示注释,一般都是#加要注释的内容。2.ifdef...endif,表示如果定义了变量。例如:

# Only use ANDROID_BUILD_SHELL to wrap around bash.
ifdef ANDROID_BUILD_SHELL
SHELL := $(ANDROID_BUILD_SHELL)
else
SHELL := /bin/bash
endif

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在执行过程中,如果规则的命令执行错误,将删除已经被修改的目标文件。

相关推荐