1.总控makefile:进入各功能子目录执行make命令,并将所有.o文件生成可执行文件
2.功能目录makefile:将功能目录下的所有.c文件编译成.o文件
3.脚本目录makefile:定义其他makefile文件所用到的变量
阅读顺序:3、1、2
1.
(
w
i
l
d
c
a
r
d
模
式
参
数
)
e
g
:
r
e
s
u
l
t
:
=
(wildcard 模式参数) eg:result:=
(wildcard模式参数)eg:result:=(wildcard *.c)
列出当前目录下所有.c 文件
2.
(
p
a
t
s
u
b
s
t
模
式
参
数
,
参
数
1
,
参
数
2
)
e
g
:
r
e
s
u
l
t
:
(patsubst 模式参数,参数1,参数2) eg:result:
(patsubst模式参数,参数1,参数2)eg:result:(patsubst,%.c,%.o,x.c,y.c)
Result:=x.o,y.o
3.:= 防止出现死循环
4.+= 给前一个变量追加值
5.
(
a
d
d
s
u
f
f
i
x
参
数
1
,
参
数
2
)
,
参
数
1
的
每
个
单
词
都
加
上
参
数
2
做
参
数
2
后
缀
r
e
s
u
l
t
:
=
(addsuffix 参数1,参数2),参数1的每个单词都加上参数2做参数2后缀 result:=
(addsuffix参数1,参数2),参数1的每个单词都加上参数2做参数2后缀result:=(addsuffix .c,x y)
Result=x.c,y.c
6.foreach
(
f
o
r
e
a
c
h
变
量
参
数
,
参
数
1
,
表
达
式
)
功
能
:
循
环
取
出
参
数
1
中
的
单
词
赋
值
给
变
量
参
数
,
然
后
运
行
表
达
式
。
返
回
值
:
表
达
式
运
行
结
果
a
:
=
x
y
z
r
e
s
u
l
t
:
=
(foreach变量参数,参数1,表达式) 功能:循环取出参数1中的单词赋值给变量参数,然后运行表达式。返回值:表达式运行结果 a:=x y z result:=
(foreach变量参数,参数1,表达式)功能:循环取出参数1中的单词赋值给变量参数,然后运行表达式。返回值:表达式运行结果a:=xyzresult:=(foreach,b,
(
a
)
,
(a),
(a),(b).c)
Result=x.c y.c z.c
7.
(
c
a
l
l
变
量
参
数
,
参
数
…
…
…
)
功
能
:
循
环
把
参
数
依
次
赋
值
给
变
量
参
数
中
的
(call 变量参数,参数………) 功能 :循环把参数依次赋值给变量参数中的
(call变量参数,参数………)功能:循环把参数依次赋值给变量参数中的(1)、
(
2
)
…
…
…
…
返
回
值
:
赋
值
后
的
变
量
值
a
:
=
(2)…………返回值:赋值后的变量值 a:=
(2)…………返回值:赋值后的变量值a:=(2),
(
1
)
R
e
s
u
l
t
:
=
(1) Result:=
(1)Result:=(call $(a),x y)
Result=y x