makefile 简单应用

Makefile简单应用

(1).Makefile中最重要的组成部分是”规则“,

规则:用于说明如何生成目标文件,规则的格式如下:

targets:prerequisites

command

目标依赖 命令

特别提供:命令需要使用【tab】键空格。目标只有一个,依赖、命令可以有多个。

makefile中把那写只有命令,没有依赖的目标称为“伪目标”(phonytargets.

.PHONY:clearn

clrean:

rm-f hello main.o func.o

.PHONY”将“clearn”目标声明为伪目标。

makefile中有多条规则时,可以这样单独执行某条规则:make目标名。如果用户没有指定执行某一条规则,make会默认执行makefile中第一条规则,而第一条规则中的目标称为:最终目标。

(2).Makefile变量

1>用户定义变量

使用变量前:

app1:app1.o func1.o func2.o

gccapp1.o func1.o func2.o -o app1

app2:app2.o func1.o func2.o

gccapp2.o func1.o func2.o -o app2

使用变量后:

obj=func1.ofunc2.o

app1:app1.o $(obj)

gccapp1.o $(obj) -o app1

app2:app2.o $(obj)

gccapp2.o $(obj) -o app2

2>makefile中,用户除了自己定义变量之外。还可以使用存在系统已经定义好的默认变量。

$^:代表所有的依赖文件

$@:代表目标

$<:代表第一个依赖文件

使用前:

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).makefile通用规则:

命令完全一样,目标名字和依赖名字仅仅是后缀的区别。如:

led.o:led.S

arm-linux-gcc-g -o $@ -c $^

main.o:main.S

arm-linux-gcc-g -o $@ -c $^

则所有满足这样条件的规则可以写成:

%.o:%.S

arm-linux-gcc-g -o $@ -c $^

这一条规则可以代替以上的两条规则。

(4).mkakefile使用技巧:

1>去回显:makefile中“#”字符后的内容被视做注释。

hellohello.c

@arm-linux-gcchello.c -o hello

@:取消回显。

2>修改makefile

make命令默认在当前目录下寻找名字为makefile或者Makefile的工程文件,当名字不为两者之一时,可以使用如下方法指定:make-f文件名

你可能感兴趣的:(linux,makefile)