Makefile的写法

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 文件名

 

posted on 2015-05-06 19:12  LeoSanford  阅读(294)  评论(0编辑  收藏  举报

levels of contents