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 命令即可。

目录
相关文章
|
21天前
|
消息中间件 Linux
Linux:进程间通信(共享内存详细讲解以及小项目使用和相关指令、消息队列、信号量)
通过上述讲解和代码示例,您可以理解和实现Linux系统中的进程间通信机制,包括共享内存、消息队列和信号量。这些机制在实际开发中非常重要,能够提高系统的并发处理能力和数据通信效率。希望本文能为您的学习和开发提供实用的指导和帮助。
86 20
|
2月前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
3月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
380 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
3月前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
784 3
|
3月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
920 3
|
3月前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
87 2
|
3月前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
114 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
3月前
|
算法 Java Linux
java制作海报五:java 后端整合 echarts 画出 折线图,项目放在linux上,echarts图上不显示中文,显示方框口口口
这篇文章介绍了如何在Java后端整合ECharts库来绘制折线图,并讨论了在Linux环境下ECharts图表中文显示问题。
77 1
|
3月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
87 4
|
8天前
|
机器学习/深度学习 人工智能 运维
基于AI的自动化事件响应:智慧运维新时代
基于AI的自动化事件响应:智慧运维新时代
67 11