当前位置:网站首页>学会make/makefile基本用法
学会make/makefile基本用法
2022-08-06 14:51:00 【i跑跑】
目录
make/makefile是什么?
make/makefile是Linux项目自动化构建工具
make是一条命令
makefile是一个文件
make调用makefile,两个搭配使用,完成项目自动化构建
自动化构建
在makefile中写好我们要编译的东西,使用 make 命令,会自动执行 makefile 中的内容,减少重复写命令的实践,提高效率。
举例



接下来使用 make 命令:

分析 makefile 中的各部分

依赖关系
:前面是想要生成的文件,后面是此文件要生成所依赖的源文件
相当于写在makefile中的——(目标文件:源文件 )—— 就是依赖关系
依赖方法
依赖方法的上方是依赖关系,只有依赖关系是达不到我们得到目标文件的目的,还需要依赖方法,相当于——源文件生成目标文件的步骤——就是依赖方法
而 make 命令,可以通过依赖关系来自动调用依赖方法,make 和 makefile 工具可以提前写好命令,防止命令的错误书写,也更加方便
清理项目
上述我们是根据依赖关系和方法生成了项目,在 makefile 中也是支持清理项目:


伪目标
一般会在用 .PHONY 来修饰 clean ,而被 .PHONY 修饰的目标都称为伪目标:

伪目标表示:目标总是被执行的
这句怎么理解,有总是被执行,就有总是不被执行举例如下:
上图中目标 test 未被 .PHONY 修饰为伪目标,那么他不会一直执行:

下面我们将 test 修改为伪目标:

再次频繁调用 make:

makefile如何识别生成的目标文件的新旧?
上述提到了,不是伪目标的话,生成一次目标后,再次调用 make ,是不能再次调用依赖方法,重新生成目标的,因为我们要再次生成的目标根和已经生成的目标是完全相同的,那么makefile是如何识别新旧目标来防止重复生成的呢?
答案:makefile 会根据对比旧目标和源文件的--内容更改的时间,来确定新目标要不要生成,源文件的时间晚,则表明源文件被更改过,重新编译生成目标,若目标的时间晚,则不用重新生成。
文件有三个时间:

验证访问的时间


说明了 makefile 是不是根据访问时间来判断是否重新生成目标的
验证修改属性的时间

说明了 makefile 是不是根据属性修改时间来判断是否重新生成目标的
验证内容更改的时间


说明了 makefile 是否重新调用依赖方法生成目标,是对比目标和源文件谁记录的内容更改时间更晚,源文件更晚,则会重新生成目标!
边栏推荐
- 【机器学习】21天挑战赛学习/论文总结(第一周)
- 七夕七夕 - 怎么给女朋友送礼物攻略
- 【LeetCode】658. Find the K closest numbers
- In-depth explanation of edge cloud | 5. Runtime control
- 因宇航服存在安全问题 NASA叫停国际空间站所有太空行走任务
- FinalShell远程连接操作
- 开源一夏 | 自从我使用HiFlow场景连接器后,在也不用担心成为“落汤鸡”了
- GNN for mmWave radar: Radar-PointGNN
- [Message Queue] What do you think the message queue can do?
- 如何判断一款GameFi游戏是否有发展空间?
猜你喜欢

听声辨物,这是AI视觉该干的???|ECCV 2022

狂神说之redis笔记

池塘cPond分享会第5期 • 守望者联盟 • 巴比特副总裁马千里 • 数字艺术对Web3的价值...

Two Set collections get the same elements

Redis安装

Introduction to 15 days Web3, quick guide from 0 to 1

【ASM】字节码操作 MethodVisitor 案例实战 init 方法生成

腾讯云胡启明:Kubernetes云上资源的分析与优化

Odoo website tutorial - theme

Machine learning notes (Wu En up to the teacher)
随机推荐
paper speed reading column index
腾讯欲成育碧最大股东/ 米哈游招NLP内容生成研究员/ AI发现四千余物种濒临灭绝...今日更多新鲜事在此...
MySQL storage engine
LeetCode刷题日记:899. 有序队列
西湖大学教授怎么看AI制药革命?|量子位智库圆桌实录
Practical+Reverse+Engineering Chapter 3 List Exercises
梅科尔工作室OpenHarmony设备开发培训笔记-第5章学习笔记
[Message Queue] What do you think the message queue can do?
如何从一个空有上进心的人,变成行动上的巨人?
【LeetCode】658.找到K个最接近的数
读《架构师修炼之道》有感
(零知识证明)关于gnark包不匹配导致链码安装失败的问题
LeetCode Brushing Diary: 1545. Find the Kth bit in the Nth binary string
微服务中如何切换配置文件、部署
PysparkNote103---window滑窗
什么是元宇宙?
[Blue Bridge Cup Training 100 Questions] Scratch ticket change, Blue Bridge Cup scratch competition special prediction programming questions, training simulation practice questions No. 23
LeetCode 0174. 地下城游戏
CSDN 21-day Learning Challenge - The first punching article
SRC中逻辑漏洞检查总结