Makefile核心(第一节)

文章目录

  • 前言
  • Makefile核心
  • 举例讲解
  • 结束

前言

曾以为学习过程是痛苦的,其实真正静下心来是美好的,虽然很枯燥,但生活就是这样,不学习还能干吗呢…… ——张顺

makefile是相当重要的,只要你要写大工程,就必须学习makefile,我在网络找了半天没有找到合适且适合学习的资料,于是乎我想写一个关于Makefile系列的文章,将自己所学,并且总结起来,发布出来,和大家一起讨论进步学习。

还有一点:
以后的章节估计多数就要开启付费了,想学习的小伙伴希望继续跟着,一起学习,如有问题欢迎留言共同讨论解决,生活不易,开启付费……

理论了解(可以不看):
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令。–百度

Makefile核心

在这里插入图片描述

目标: 是要最终生成的文件
依赖: 目标的依赖,由什么构成的目标,比如可以是目标的源代码文件等等
tab命令: 必须前面加tab符号,当我的依赖更新则会执行命令

举例讲解

demo1.c的源代码
Makefile核心(第一节)_第1张图片
和Makefile的源代码
Makefile核心(第一节)_第2张图片
hello: 目标生成的文件
demo1.c hello文件由我这个demo1.c的文件生成
gcc -o hello demo1.c 编译指令,当demo1.c的源文件有改动则会执行这个编译,保证最新的hello目标文件

输入make编译文件
在这里插入图片描述
成功编译,且有hello文件
在这里插入图片描述
./hello
在这里插入图片描述

正是我demo1.c写的源代码的执行结果。

但是按照上面我所讲的Make核心,是由3部分组成,这里hello没有问题,但是按照所讲因该也会执行clean的规则下的命令删除hello,但是却可以看到hello可以执行并没有被删除,也就是clean规则命令没有被执行,为什么没有呢?

当然不会有,于是乎你发现clean规则没有,导致无法执行他规则下的命令。

clean规则没有依赖,这就说明,有些规则可以不需要依赖,那么没有依赖如何判断执行rm -f hello这条命令呢?

可以这么做 make clean
在这里插入图片描述
成功执行,且没有了hello文件

带参数输入clean则会执行对应的命令,且是无条件执行,不管你有没有hello文件他都会执行对应命令

我想应该讲明白了吧。

结束

希望大家跟着我一起学习,如有问题欢迎留言共同讨论解决,生活不易,开启付费……

你可能感兴趣的:(Makefile从入门到放弃,linux,makefile)