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

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

1. Makefile 是如何工作的

make 是一个命令。

Makefile 是一个文件,当前目录下的一个文件。

我们先来上手写一个简单的 Makefile 文件,

1. 创建一个叫 Makefile 的文件(首字母可以小写)

2. 编辑这个文件

mycode:mycode.c

mycode:mycode.c,这是个什么?

我们在当前目录下创建了一个叫做 mycode.c 的文件,

这句话的意思是将 mycode.c 文件编译成 mycode,中间用 :隔开,

我们称这个为依赖关系。

那具体怎么编译呢?

gcc -o mycode mycode.c

下面的 gcc -o mycode mycode.c 就叫做依赖方法。

写完之后保存退出。

我们把 mycode.c 的代码编写好:

然后我们就直接输入 make:

他就会根据我们的依赖关系执行对应的依赖方法,这样就生成了 mycode 可执行程序。

那如果我们不想要这个可执行程序了,该怎么办?直接 rm 吗?好像不太好,

我们再次打开 Makefile 文件:

写一个 clean,不依赖任何东西,然后写好依赖方法,

这样当我保存退出后,直接写入 make clean:

就会自动帮我们使用 clean 的方法。

这样当我们再修改我们 mycode.c 的代码之后,

我们就不用再用 gcc 了,可以直接 make clean;make 就能重新构建可执行程序。

2. 依赖关系与依赖方法

还是拿这个来举例,

mycode 依赖于 mycode.c

但是光有依赖关系是办不成任何事情的,

所以就有了下面的依赖方法

而 make 就会在当前路径下查找 Makefile 文件,执行这些依赖关系以及他们的方法。

而 make 会自顶向下扫描,第一个文件就会作为他的默认文件,

所以第一个文件是谁,直接 make 就会执行谁。

3. .PHONY

当我们重复的进行 make 的时候,他不让我们编译了,

因为操作系统检测到我们的源文件没有修改,没有必要重新编译,

那我们怎么样才能让他不限制我们呢?

我们加上这样一个东西,就是告诉系统,不要管我们:

这样我们随便 make 他就不管我们了。

不过我们不太推荐一直可以编译可执行程序,但是清理工作可以这样设置:

4. Makefile 的特殊符号

还是以我们之前的写的 Makefile 文件:

$@ 表示的是依赖关系左边的值

$^ 表示的是依赖关系右边的值

通过这两个符号,我们之后就不用手写了,只需要写好依赖关系,

就可以直接使用这两个符号。

Makefile 学会这些就基本够用了。

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果感到有所收获的话可以给博主点一个哦。

如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~

相关文章
|
8月前
|
人工智能 监控 Kubernetes
77_自动化脚本:Makefile与Airflow
在当今AI大模型时代,高效的工作流管理对于模型训练、推理和部署至关重要。随着大模型规模的不断增长和复杂度的提升,传统的手动脚本管理方式已无法满足需求。自动化脚本和工作流调度系统成为构建健壮、可重复、可扩展的LLM Pipeline的关键工具。其中,Makefile作为经典的自动化构建工具,与Airflow作为现代工作流调度平台的结合,为LLM开发团队提供了强大的工作流管理能力。
238 0
|
Rust Ubuntu Java
[Linux工具] Makefile
Makefile是Linux环境下用于自动化编译和链接程序的配置文件,常用于简化大型项目的编译流程。通过定义目标文件、依赖文件及生成命令,Makefile能高效管理编译任务。它不仅适用于C语言项目,还可扩展到其他编程语言和非编程任务中。
[Linux工具] Makefile
|
NoSQL Linux 开发工具
Linux环境基础开发工具的使用(yum、vim、gcc、g++、gdb、make/Makefile)
本文介绍了yum 包管理工具、Vim 编辑器、gcc/g++ 编译器、gdb 调试器、编译原理及 Makefile 的使用,同时还配备了如何使用,以及图解。旨在帮助读者更好地理解和应用这些工具与技术。
602 0
|
Unix Linux C语言
【Linux】 Linux makefile 教程
本文详细介绍了 Linux 环境下 Makefile 的基本结构、语法和使用方法,并通过一个简单的 C++ 项目示例演示了 Makefile 的实际应用。Makefile 是一个强大而灵活的工具,通过合理配置,可以极大地简化项目的编译和管理过程,提高开发效率。希望本文能帮助您更好地理解和应用 Makefile,在实际项目中高效管理代码的编译和构建。
969 20
|
Unix Linux C语言
【Linux】 Linux makefile 教程
本文详细介绍了 Linux 环境下 Makefile 的基本结构、语法和使用方法,并通过一个简单的 C++ 项目示例演示了 Makefile 的实际应用。Makefile 是一个强大而灵活的工具,通过合理配置,可以极大地简化项目的编译和管理过程,提高开发效率。希望本文能帮助您更好地理解和应用 Makefile,在实际项目中高效管理代码的编译和构建。
400 16
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
1755 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
2344 10
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
974 2
|
8月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
1249 62
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南