【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 学会这些就基本够用了。

写在最后:

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

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

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

相关文章
|
1天前
|
Linux Shell C语言
Linux:自动化构建 - make
Linux:自动化构建 - make
13 1
|
1天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
30 5
|
1天前
|
安全 Linux Python
Volatility3内存取证工具安装及入门在Linux下的安装教程
Volatility3内存取证工具安装及入门在Linux下的安装教程
Volatility3内存取证工具安装及入门在Linux下的安装教程
|
1天前
|
数据可视化 小程序 Linux
【Linux】自动化构建工具make/Makefile和git介绍
【Linux】自动化构建工具make/Makefile和git介绍
15 0
|
1天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
16 3
|
Linux 程序员 开发者
你要的Linux命令手册,这个开源项目里全都有!
对于大多数开发者来说,Linux命令行是每天必用的工具;但是,熟练使用命令行是一种常常被忽视或被认为难以掌握的技能,有的程序员即便每天使用许多Linux命令行,但是由于没有持续性练习,经常就容易忘
你要的Linux命令手册,这个开源项目里全都有!
|
1天前
|
安全 网络协议 Linux
linux必学的60个命令
Linux是一个功能强大的操作系统,提供了许多常用的命令行工具,用于管理文件、目录、进程、网络和系统配置等。以下是Linux必学的60个命令的概览,但请注意,这里可能无法列出所有命令的完整语法和选项,仅作为参考
155 2
|
1天前
|
Linux 程序员 计算机视觉
【linux 学习】在Linux中经常用到的cmake、make、make install等命令解析
【linux 学习】在Linux中经常用到的cmake、make、make install等命令解析
12 0
|
1天前
|
Linux
Linux的find命令使用
【5月更文挑战第11天】Linux的find命令使用
12 3
|
1天前
|
监控 Linux 数据处理

热门文章

最新文章