企业级makefile知识点
条件编译
#是注释
查找目录(cd /mnt之后就一直Tab键)
解压文件
企业级Makefile编写:
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)
result找出当前目录下所有.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
如:obj= ( p a t s u b s t (patsubst %.c,%.o, (patsubst(dir)),把上面$(dir)变量里面以.c结尾的文件全部替换为.o结尾。
3、:=(防止死循环)
a1:=a.o
a2:=$(a1) b.o
a1=a.o a2=a.o b.o
a2 :=a.o
a1 =b.o a2=a.o
4、 +=(给变量追加值)
a1 =a.o
a1 +=b.o
a1= a.o b.o
a1=a.o
a1 :=$(a1) b.o
a1 =a.o b.o
(?= 防止重复定义a1:=a.o a1?=b.o 如果a1未 定义则为新值, 否则为原值)
5、
(
a
d
d
s
u
f
f
i
x
参
数
1
,
参
数
2
)
r
e
s
u
l
t
:
=
(addsuffix 参数1,参数2) result:=
(addsuffix参数1,参数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), $(b).c) result =x.c y.c z.c 7、 ( c a l l 变 量 参 数 , 参 数 … … ) 功 能 : 循 环 把 参 数 依 次 赋 值 给 变 量 参 数 中 的 (call变量参数, 参数……) 功能:循环把参数依次赋值给变量参数中的 (call变量参数,参数……)功能:循环把参数依次赋值给变量参数中的(1)、$(2)……返回值:赋值后变量值 a:= $(2) ( 1 ) r e s u l t : = (1) result := (1)result:=(call $(a),x y) result =yx