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文件名和目标名不能相同!