makefile文件编写_九图记住Makefile

b3648881ed3f25a046e6e7873a38baa6.png

本文首次编辑时间2020.07.20

最后编辑时间2020.08.03

欢迎转载,转载请附上原文链接

参考:

GNU make说明文档:https://www.gnu.org/software/make/manual/html_node/index.html#SEC_Contents

【跟我一起写Makefile】:https://seisman.github.io/how-to-write-makefile/


前言

Makefile的撰写只是为了自动化流程,如果是Windows 程序开发者,IDE(Integrated Development Environment)已经集成好了编译工具和make工具,不需要我们再手工编写Makefile。但是在嵌入式开发中,我们都会在Linux平台上进行开发然后交叉编译,这时就需要我们自己手工完成编译过程,所以Makefile必不可少。说开又说,学习Makefile是嵌入式开发者的必经之路,也只有清楚整个项目的编译过程,才能对嵌入式开发有更好的理解。本文不适合Makefile从零开始的开发者。这里只是以图表的形式对Makefile的编写做知识归纳,也方便自己以后复习和查找相关资料。


一、解释编译和链接

以C/C++代码为例,我们编写完代码后变成可执行文件需要经过编译和链接阶段。这个过程如果在Windows下是由IDE内置的编译器和链接器完成的。但是在Unix系统我们需要自己处理这个过程。以图解表示如下

8078f8dd09a0708cf0718f27b75505da.png
编译和链接

二、Make的工作流程

3000b803a703de2f5e10c357b282a41f.png
Make的工作流程

在 Makefile 中,规则的顺序是很重要的,因为,Makefile 中只应该有一个最终目标,

其它的目标都是被这个目标所连带出来的,所以一定要让 make 知道你的最终目标是什么。

一般来说,定义在 Makefile 中的目标可能会有很多,但是第一条规则中的目标将被确立为

最终的目标。如果第一条规则中的目标有很多个,那么,第一个目标会成为最终的目标。 make所完成的也就是这个目标


三、书写依赖规则

make实际上只是检查Makefile里面的依赖关系(规则),然后决定哪一条规则下面的命令会被执行。命令执行成功与否make并不管

4347bf4e83bd9aa7aa180cafb71ba5e1.png
Makefile的规则书写办法

四、书写命令

当make检查到某一条规则里,依赖文件比目标文件更新的情况时,就会执行该规则下的命令

82ebb4465014227c25b57826e8b842dd.png
Makefile命令的书写

五、使用变量

7198de8fced273550677b7e5709a433c.png
Makefile中的变量

使用得最多最频繁的,可能是自动化变量了

d5ea62fadba244b49d81b0f969c1505b.png
Makefile中的自动化变量

六、使用函数

c016021fab39b0fec2d36f62aeb43d2d.png
字符串处理函数

03af261f799de80ee06d20f08712a0be.png
文件名操作函数

87fceb3e541ebfb5bad86c0e77b5eaec.png
逻辑类函数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值