Linux项目自动化构建工具:make/Makefile

简介: Linux项目自动化构建工具:make/Makefile

1.make/Makefile简介


1.1Makefile


Makefile是一个文本文件,用于记录一个项目的构建规则


1.2make


make是一个Makefile解释程序,找到当前目录下的Makefile然后逐行解释,执行指令完成项目的构建。


2.Makefile编写规则★


目标对象:依赖对象


[tab]要执行的指令


示例:


在Makefile中写入以下内容:


1.png2.png


2.1伪对象


因为非依赖文件的修改,不会引起目标对象的重新生成,所有引入了伪对象,即被.PHONY:修饰的目标,总是被执行的。


伪对象声明:


.PHONY:伪对象


功能:


表示当前的目标对象,并不是一个需要实际生成的实体目标对象,根本目的是为了解除目标对象与实体之间的关系。常用于项目清理的clean对象。


示例:


3.png


此时尝试重复生成test,会显示已是最新,不会重新执行:


4.png


将其声明为伪对象,再次尝试:



5.png

6.png


每次都会重新执行。


2.2预定义变量


$^


表示所有的依赖对象。


$@


表示目标对象。


$<


表示所有依赖对象中的第一个。


示例:


7.png

8.png


gcc $^ -o $@ 就会被解释为  gcc test.c -o test


3.make解释规则★


· make会根据目标对象和依赖对象的最后一次修改时间来进行判断,判断目标对象是否需要重新生成。


· make后面跟上目标对象名称,表示在Makefile中寻找对应的目标对象生成规则,生成指定目标对象。


· make找到Makefile中的第一个目标对象及生成规则,进行指令执行,生成后就退出;这意味着Makefile中就算有多个目标对象,也只生成第一个。


· make虽然只生成第一个目标对象,但是如果它的依赖对象不存在,它会递归向下寻找依赖对象依赖对象的生成规则,先将依赖对象生成,然后再去生成目标对象。


相关文章
|
4月前
|
安全 Linux iOS开发
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
300 6
Nessus Professional 10.10 Auto Installer for RHEL 10, AlmaLinux 10, Rocky Linux 10 - Nessus 自动化安装程序
|
4月前
|
人工智能 监控 Kubernetes
77_自动化脚本:Makefile与Airflow
在当今AI大模型时代,高效的工作流管理对于模型训练、推理和部署至关重要。随着大模型规模的不断增长和复杂度的提升,传统的手动脚本管理方式已无法满足需求。自动化脚本和工作流调度系统成为构建健壮、可重复、可扩展的LLM Pipeline的关键工具。其中,Makefile作为经典的自动化构建工具,与Airflow作为现代工作流调度平台的结合,为LLM开发团队提供了强大的工作流管理能力。
|
8月前
|
NoSQL Linux 开发工具
Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)
本文介绍了yum 包管理工具、Vim 编辑器、gcc/g++ 编译器、gdb 调试器、编译原理及 Makefile 的使用,同时还配备了如何使用,以及图解。旨在帮助读者更好地理解和应用这些工具与技术。
410 0
|
Rust Ubuntu Java
[Linux工具] Makefile
Makefile是Linux环境下用于自动化编译和链接程序的配置文件,常用于简化大型项目的编译流程。通过定义目标文件、依赖文件及生成命令,Makefile能高效管理编译任务。它不仅适用于C语言项目,还可扩展到其他编程语言和非编程任务中。
[Linux工具] Makefile
|
Unix Linux C语言
【Linux】 Linux makefile 教程
本文详细介绍了 Linux 环境下 Makefile 的基本结构、语法和使用方法,并通过一个简单的 C++ 项目示例演示了 Makefile 的实际应用。Makefile 是一个强大而灵活的工具,通过合理配置,可以极大地简化项目的编译和管理过程,提高开发效率。希望本文能帮助您更好地理解和应用 Makefile,在实际项目中高效管理代码的编译和构建。
837 20
|
Unix Linux C语言
【Linux】 Linux makefile 教程
本文详细介绍了 Linux 环境下 Makefile 的基本结构、语法和使用方法,并通过一个简单的 C++ 项目示例演示了 Makefile 的实际应用。Makefile 是一个强大而灵活的工具,通过合理配置,可以极大地简化项目的编译和管理过程,提高开发效率。希望本文能帮助您更好地理解和应用 Makefile,在实际项目中高效管理代码的编译和构建。
294 16
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
2105 10
|
4月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
5月前
|
运维 Linux 网络安全
自动化真能省钱?聊聊运维自动化如何帮企业优化IT成本
自动化真能省钱?聊聊运维自动化如何帮企业优化IT成本
182 4