根目录下的makefile 为总控的makefile :1、进入各个功能子目录执行make命令 2、将所有.o文件链接生成可执行文件
功能目录的makefile :1、将src目录里的.c文件编程生成.o文件
scripts的makefile:定义变量 (相当于c语言中的头文件)
项目的makefile顺序 scripts的makefile 再看总控makefile 其次看功能目录makefile
:= 前面的变量不能通过后面的变量来定义。
+= 实现给变量追加值
?= 防止重复定义
patsubst
格式:$(patsubset模式参数,参数1,参数2)
功能:把参数2中符合模式参数的单词(单词是指参数中被空格隔开的字符串)替换成参数1
返回值:被替换后的参数2
wildcard
格式:$(wildcard模式参数)
功能:列出当前目录下所有符合模式参数的文件名
返回值:当前目录下所有符合模式参数的文件名
addsuffix
格式:$(addsuffix 参数1,参数2)
功能:在参数2中的每个单词加上后缀参数1
返回值:加上后缀的所有单词
addprefix
格式:$(addprefix 参数1,参数2)
功能:在参数2中的每个单词加上前缀参数1
返回值:加上前缀的所有单词
foreach
格式:$(foreach 变量参数,参数1,表达式)
功能:循环取出参数1中的单词赋给变量参数,然后运行表达式
返回值:表达式的运行结果
call
格式:$(call 变量参数,参数…)
功能:循环把参数依次赋给变量参数中的
(
1
)
、
(1)、
(1)、(2)…
返回值:赋值后的变量值