1. Makefile编程

Makefile中的目标分两类:

伪目标:只作为标签使用,本身没有任何意义!

常用的伪目标:

all:当前Makefile第一个目标是伪目标,一般喜欢使用all作为目标名!

clean:如果做清除操作,为了明确操作代码,目标可以命名为clean

目标:如果制定工程编译规则,这时使用的就是目标!

目标定义格式: target: 依赖文件

1)拥有自动推导规则!

编译过程中: 预处理、编译、汇编-->main.o  show.o  led.o  key.o-->链接-->app

2)使用Makefile制定编译规则的时候,一般用的是自动编译变量!

补充:

make   -f filename :指定filename文件作为make的执行对象!

 

2.1 自动编译变量

在编译过程中,每一个自动变量都固定表示某一个位置的值!

$@ : 当前编译目标!<该变量固定存放当前目标的目标名>

$^ : 当前目标所有依赖文件!

$< : 当前目标的第一个依赖文件

$? : 上一次编译完成之后,又修改过的依赖文件的集合

$+ : 表示所有依赖文件,不会去掉重复的文件

$* : 表示当前目标所有依赖文件!过滤重复依赖!<上层Makefile不支持>

Makefile中统配符不是*,而是%。

2.2 Makefile的递归调用

某一个目录下的Makefile要去调用其他目录下的Makefile,用法如下:

make   -C   指定路径   执行目标

说明:

make :执行一个Makefile

-C :指定要执行那个路径下的Makefile

指定路径:要执行的Makefile文件所在的路径

执行目标:指定路径下的Makefile中的某一个目标

var=123 :给指定路径下的Makefile的传参   

注意:上面这种Makefile递归调用必须放在Makefile文件中编写,不能命令行独立编写!

注意:Makefile文件名和目标名不能相同!