企业级Makefile编写
1.总控makefile:进入各个功能子目录执行make命令,并将所有.o文件生成可执行文件
2、功能目录makefile:将功能目录下的所有.c文件编译成.o文件
3、脚本目录makefile:定义其他makefile文件所用到的变量
阅读makefile顺序;3 - 1 - 2
1、$(wildcard 模式参数)
列:result :=$(wildcard *.c )
列出当前目录下所有.c文件
2、$(patsubst 模式参数,参数1,参数2)
列:result:=$(patsubst %.c ,%.o,x.c,y.c)
result:=x.o,y.o
3、:=(防止出现死循环)不可以通过后面的变量给前面的变量赋值
a1:=a.o
a2:=$(a1) b.o
a1=a.o a2=a.o b.o
a1:=$(a2) 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
5、$(addsuffix 参数1,参数2)
result:=$(addsuffic .c,x y)
result=x.c y.c
6、foreach
$(foreach 变量参数,参数1,表达式)
功能:循环取出参数1中的单词赋值给变量参数,然后运行表达式。返回值:表达式运行结果
a:=x y z
result:=$(foreach b,$(a), $(b).c)
result = x.c y.c z.c
7、$(call 变量参数, 参数…)
功能:循环把参数依次赋值给变量参数中的$(1)、$(2)…返回值:赋值后的变量值
a:=$(2) $(1)
result :=$(call $(a),x y)
result=yx