最主要的规则就是:
Target : Indepentance
(TAB键开头)Command
一.通配符可以使用
二.文件搜寻:
1.使用特殊变量VPATH,比如 VPATH=SRC: ../keep,定义了两个路径,用冒号分隔
2.使用vpath ,此为make特殊的关键字,使用方法如下(一定要使用%):
vpath %.c foo 寻找foo路径下以.c结尾的文件
vpath % pat 寻找pat路径下以.c结尾的文件(重复可以省略)
vpath %.c foo:bar 两个路径搜索
三.伪目标
伪目标一般没有依赖文件,可以为其指定。先声明再定义(防止与文件重名难识别)
.PHONY:clean
clean:
rm -f *.o (-rm xxx表示忽略命令的出错信息)
常用伪目标:all: tar1 tar2 tar3 install clean
四.特殊符号
$@ 规则的目标文件
$< 规则的第一个依赖文件
$^ 规则的全部依赖文件
五.静态模式
target: pattern1:pattren2
command
如 object=foo.o bar.o
$(object):%.o:%.c 把foo.o,bar.o变成了foo.c,bar.c
六.变量赋值
= 是最基本的赋值
:= 是覆盖之前的值(如果变量在这之前没有定义,那就不能使用该变量)
?= 是如果没有被赋值过就赋予等号后面的值
+= 是添加等号后面的值(其实是重复上一条语句的运算)
七.取消回显文本
在命令TAB键后加@
@gcc -c main.c aa.c -o main
八.变量的高级用法
第一种是变量值的替换,格式是$(var:a=b)
foo:=a.o b.o c.o
bar:=$(foo: .o=.c ) 把$(foo)中.o替换成.c
第二种就是把变量的值再当成变量
x=y
y=z
a:=$($(x))