Linux- Makefile编程学习笔记

六月ゝ 毕业季﹏ 提交于 2020-03-24 17:34:33

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   指定路径   执行目标   var=123

说明:

make :执行一个Makefile

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

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

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

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

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

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!