一:
1.make命令会在当前目录下查找以makefile命名的文件
2.当找到makefile文件后,会按照makefile中定义的规则去编译生成最终的目标文件
3.当发现目标文件的依赖不存在不存在,或者目标所依赖的文件比目标文件新(也就是修改时间比目标文件晚)的话就会执行后面的命令来更新依赖和目标文件
二:
“=”赋值符:采用等号赋值,变量的真实值取决于它所引用的变量的最后一次有效值
name=wh
curname=
(
n
a
m
e
)
n
a
m
e
=
c
c
p
r
i
n
t
:
@
e
c
h
o
c
u
r
n
a
m
e
:
(name) name=cc print: @echo curname:
(name)name=ccprint:@echocurname:(curname)
make print 结果:Curname:cc
“:=”赋值符,不会使用后面定义的变量,只能使用前面已经定义好的,和上面的相反
“?=”赋值符:如果前面没有赋值,就使用当前的赋值,否则就使用前面已经赋过的值
“+=”z追加赋值符,在前面赋值的基础上进行追加
三:模式规则%:表示长度任意的非空字符
四:自动化变量
1.
@
,
@,
@,<.$^
五:伪目标:不代表真正的目标名,在make时通过伪目标来执行其所在规则定义的命令。
clean:
rm *.o
如目录中也存在clean文件,则该命令执行失败,解决方法使用.PHONY声明
.PHONY: clean
clean:
rm *.o
六:函数
1.subst 字符串替换
2.patsubst 模式字符串替换
3.dir 获取目录
4.notdir 去除文件中的目录部分
5.foreach 循环执行
6.wildcard 变量定义或者函数定义时展开通配符
七:静态模式