3.15
小贴士:
---->cp -r(复制文件夹)(递归----一级一级查目录)
---->创建的 main.h文件主要当做库来使用(存放被调函数的 所有函数声明)
---->vim …/hello.c(编辑上一个目录中的.c文件)
---->vim main/mian.c 编辑main文件夹下的mian.c文件
企业级Makefile编写:
1.总控makefile:进入各个功能子目录执行make命令,并将所有.o文件生成可执行文件
2.功能目录makefile:将功能目录下的所有.c文件编译成.o文件
3.脚本目录makefile:定义其他makefile文件所用到的变量
阅读makefile顺序 3-1-2
-----------------------脚本里面的一些含义-----------------------------
4.
(
w
i
l
d
c
a
r
d
+
空
格
+
模
式
参
数
)
−
−
−
−
−
−
−
−
−
−
−
>
(
w
i
l
d
c
a
r
d
是
一
个
函
数
)
e
g
:
r
e
s
u
l
t
:
=
(wildcard+空格+模式参数)----------->(wildcard 是一个函数) eg:result: =
(wildcard+空格+模式参数)−−−−−−−−−−−>(wildcard是一个函数)eg:result:=(wildcard *.c)
result 返回值------>列出当前目录下所有.c文件
5.
(
p
a
t
s
u
b
s
t
+
空
格
+
模
式
参
数
,
参
数
1
,
参
数
2
)
−
−
−
−
−
−
−
−
−
−
>
(
p
a
t
s
u
b
s
t
是
一
个
函
数
)
e
g
:
r
e
s
u
t
:
(patsubst+空格+模式参数,参数1,参数2)---------->(patsubst 是一个函数) eg:resut:
(patsubst+空格+模式参数,参数1,参数2)−−−−−−−−−−>(patsubst是一个函数)eg:resut:(patsubst %.c,%.o,x.c y.c)
result 返回值-------->x.o,y.o
6.:=------>(防止出现死循环)
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
+=------->给这个变量追加值
a1=a.o
a1 +=b.o
a1 +=a.o b.o
a1=a.o
a1:=$(a1)b.o
a1=a.o b.o
7.
(
a
d
d
s
u
f
f
i
x
参
数
1
,
参
数
2
)
−
−
−
−
>
将
参
数
2
中
每
个
单
词
都
加
上
参
数
1
的
后
缀
e
g
:
r
e
s
u
l
t
:
=
(addsuffix 参数1,参数2)---->将参数2中每个单词都加上参数1的后缀 eg: result:=
(addsuffix参数1,参数2)−−−−>将参数2中每个单词都加上参数1的后缀eg:result:=(addsuffix .c,x y)
----->返回值result=x.c y.c
----------------------总控makefile-----------------------
8.foreach
(
f
o
r
e
a
c
h
变
量
参
数
,
参
数
1
,
表
达
式
)
−
−
−
−
−
−
−
−
>
功
能
:
循
环
取
出
参
数
1
中
的
单
词
赋
值
给
变
量
参
数
,
然
后
运
行
表
达
式
。
返
回
值
为
表
达
式
的
结
果
。
e
g
:
a
:
=
x
y
z
r
e
s
u
l
t
:
=
(foreach 变量参数,参数1,表达式)-------->功能:循环取出参数1中的单词赋值给变量参数,然后运行表达式。返回值为表达式的结果。 eg: a:=x y z result:=
(foreach变量参数,参数1,表达式)−−−−−−−−>功能:循环取出参数1中的单词赋值给变量参数,然后运行表达式。返回值为表达式的结果。eg:a:=xyzresult:=(foreach b,
(
a
)
,
(a),
(a),(b).c)
result= x.c y.c z.c
9.call
(
c
a
l
l
变
量
参
数
,
参
数
.
.
.
.
.
.
.
)
−
−
−
−
−
>
功
能
:
循
环
把
参
数
依
次
赋
值
给
变
量
参
数
中
的
(call 变量参数,参数.......)----->功能:循环把参数依次赋值给变量参数中的
(call变量参数,参数.......)−−−−−>功能:循环把参数依次赋值给变量参数中的(1),
(
2
)
.
.
.
.
.
.
.
返
回
值
为
赋
值
后
的
变
量
值
e
g
:
a
:
=
(2).......返回值为赋值后的变量值 eg: a:=
(2).......返回值为赋值后的变量值eg:a:=(2)
(
1
)
r
e
s
u
l
t
:
=
(1) result:=
(1)result:=(call $(a),x y)
result=yx