1.Makefile的规则
1.1 格式
目标:依赖
命令
……
必须注意的是,命令前面的不是空格,而是制表符Tab。
1.2 伪目标
makefile中把那些只包含命令,没有任何依赖的目标称为”伪目标”(phony targets)
1 .PHONY: clean 2 clean: 3 rm *.o led.elf led.bin
“.PHONY” 将“clean”目标声明为伪目标
1.3 最终目标
如果用户没有指定执行某一条规则,make会默认执行makefile中的第1条规则,而这条规则中的目标称之为:最终目标
2.Makefile变量
2.1 自己定义变量
使用变量前
app1: app1.o func1.o func2.o gcc app1.o func1.o func2.o -o app1 app2: app2.o func1.o func2.o gcc app2.o func1.o func2.o -o app2
func1.o func2.o多次出现,用变量代替。
使用变量后
obj=func1.o func2.o #等号两边没有空格 app1: app1.o $(obj) gcc app1.o $(obj) -o app1 app2: app2.o $(obj) gcc app2.o $(obj) -o app2
2.2 系统默认的变量
$^:代表所有的依赖文件
$@:代表目标
$<:代表第一个依赖文件
使用变量前:
led.o : led.S arm-linux-gcc -g –o led.o -c led.S
使用变量后:
led.o : led.S arm-linux-gcc -g –o $@ -c $^
3.通用规则(%)
led.o:led.s arm-linux-gcc -g -o led.o -c led.S main.o:main.s arm-linux-gcc -g -o main.o -c main.S 可以写成如下: %.o:%.s arm-linux-gcc -g -o %.o -c %.S
观察可知:目标和依赖只有后缀不一样,都只有一个依赖。
4.Makefile使用技巧
4.1 去回显
命令前加@符号
4.2 文件名
make命令默认在当前目录下寻找名字为makefile或者Makefile的工程文件,当名字不为这两者之一时,可用如下方法:
make -f 文件名