Linux项目自动化构建工具-Makefile

简介: Makefile介绍Makefile是一个自动化编译工具,写好后,我们只需一个make命令,程序即可完成编译命令,并且可以根据项目需要,决定哪些文件先编译,哪些文件后编译,哪些文件重复编译等等。其中make是一条命令,makefile是一个文件,我们只需按照一定的格式将makefile文件写好即可。

Makefile介绍

Makefile是一个自动化编译工具,写好后,我们只需一个make命令,程序即可完成编译命令,并且可以根据项目需要,决定哪些文件先编译,哪些文件后编译,哪些文件重复编译等等。

其中make是一条命令,makefile是一个文件,我们只需按照一定的格式将makefile文件写好即可。

用例:

  1. 在当前目录下创建一个Makefile/makefile,写上如下代码。


70c7c2d3e67040aca8caf94b92b7dc14.png

使用make命令,即可编译成一个可执行程序。


f3e27181e3144a16a2446f6315c1c798.png

Makefile的使用

依赖关系/依赖方法

依赖关系:该文件依托于谁(根据依赖关系才能形成目标文件)。

依赖方法:依托于依赖关系执行的方法。


9822071cd04140a5828b7043b6c182ed.png

还有一种符号表示的方法:


299d64798eff4294b216ae556aa9e2ab.png

伪目标文件

使用.PHONY修饰的叫做伪目标文件,因为make命令只能执行一个目标文件(从上往下执行),而如果我们想清理文件的话,就需要定义成伪目标文件。

  • 使用 make clean 即可调用。


17692e7783544fb18a43f7431287257d.png

make 工作方式

  1. make会找当前目录下找名字叫做Makefile/makefile的文件
  2. 如果找到,它找文件中的第一个目标文件(target),上例中,它会找mytext文件,把这个文件当作最终的目标文件。
  3. 如果mytext不存在,或者mytext.c依赖关系,比mytext的文件新,那么它会执行对应的依赖方法。
  4. 如果mytext.c的文件不存在,那么会再寻找.c的依赖关系,会一层一层的去寻找(当然自己需要把依赖关系写完整)

如下:

有点像堆栈的过程。


cd05434035714af6ad698190971f41d6.png


eb44c6183c1f42c998e16d46cdf438f1.png

make [命令] 使用方式

如上文所实现的clean命令,只需:

  • make clean 命令即可。

目录
相关文章
|
30天前
|
监控 Java Linux
Linux系统之安装Ward服务器监控工具
【10月更文挑战第17天】Linux系统之安装Ward服务器监控工具
52 5
Linux系统之安装Ward服务器监控工具
|
1月前
|
JSON JavaScript Linux
Linux系统之安装cook菜谱工具
【10月更文挑战第15天】Linux系统之安装cook菜谱工具
38 2
Linux系统之安装cook菜谱工具
|
1月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
187 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
21天前
|
缓存 监控 Linux
Linux性能分析利器:全面掌握perf工具
【10月更文挑战第18天】 在Linux系统中,性能分析是确保软件运行效率的关键步骤。`perf`工具,作为Linux内核自带的性能分析工具,为开发者提供了强大的性能监控和分析能力。本文将全面介绍`perf`工具的使用,帮助你成为性能优化的高手。
68 1
|
21天前
|
缓存 监控 Linux
掌握Linux性能分析:深入探索perf工具
【10月更文挑战第26天】
25 1
|
28天前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
235 3
|
1月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
292 3
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
28 2
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
63 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
1月前
|
算法 Java Linux
java制作海报五:java 后端整合 echarts 画出 折线图,项目放在linux上,echarts图上不显示中文,显示方框口口口
这篇文章介绍了如何在Java后端整合ECharts库来绘制折线图,并讨论了在Linux环境下ECharts图表中文显示问题。
39 1
下一篇
无影云桌面