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

目录

1.make/Makefile的背景

2. 实例代码

2.1 常规代码执行过程:

2.2 使用make工具执行代码程序:

3. makefile文件内容的解释

3.1 生成解决方案 

3.2 清理解决方案

4. 多文件的makefile文件书写

5. 缓冲区



【hello Linux】Linux项目自动化构建工具-make/Makefile_第1张图片

 Linux

1.make/Makefile的背景

1. 会不会写 makefile ,从一个侧面说明了一个人是否具备完成大型工程的能力;
2. 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中, makefile
义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新
编译,甚至于进行更复杂的功能操作;
3. makefile 带来的好处就是 ——“ 自动化编译 ,一旦写好,只需要一个 make 命令,整个工程
完全自动编译,极大的提高了软件开发的效率;
4. make 是一个命令工具,是一个解释 makefile 中指令的命令工具,一般来说,大多数的 IDE
都有这个命令,比如:Delphi make Visual C++ nmake Linux GNU make 。可见,
makefifile 都成为了一种在工程方面的编译方法;
5. make 是一条命令, makefifile 是一个文件,两个搭配使用,完成项目自动化构建。

说了它的背景,那它到底是干什么的呢?有什么用呢?

下面看个例子!

2. 实例代码

2.1 常规代码执行过程:

1. 我们首先创建一个要编写代码的.c文件;

 2. 在.c文件中编写的代码如下;

【hello Linux】Linux项目自动化构建工具-make/Makefile_第2张图片

 3. 我们对它进行编译生成可执行的文件hello;

【hello Linux】Linux项目自动化构建工具-make/Makefile_第3张图片

 4. 执行hello文件;

上述便是我们常规的编写一个代码,并对其进行执行的过程。

那还有没有其他办法执行程序呢?

2.2 使用make工具执行代码程序:

1. 编写要执行的.c源文件代码程序;

【hello Linux】Linux项目自动化构建工具-make/Makefile_第4张图片

2. 创建makefile文件,建立起源文件和目标文件的依赖关系;

【hello Linux】Linux项目自动化构建工具-make/Makefile_第5张图片

 3. 执行make我们发现出现了可执行程序hello;

【hello Linux】Linux项目自动化构建工具-make/Makefile_第6张图片

 4. 执行hello程序;

【hello Linux】Linux项目自动化构建工具-make/Makefile_第7张图片

经过上述例子,我们发现通过makefile工具我们也可以实现程序的编译功能。

3. makefile文件内容的解释

3.1 生成解决方案 

【hello Linux】Linux项目自动化构建工具-make/Makefile_第8张图片

上述所示是make的解决方案,在命令行中输入make便会执行依赖方法中的命令。

3.2 清理解决方案

【hello Linux】Linux项目自动化构建工具-make/Makefile_第9张图片

上述所示是make clean的清理解决方案,在命令行中输入make clean则会执行clean:下方的语句

综述:

编写了makefile文件后,我们输入make则意味着输入了编译的命名;

输入make clean 这意味着输入了删除可执行程序的命令。

对于我们以后在Linux系统下进行代码的编译和清理都是非常方便的。

补充:

【hello Linux】Linux项目自动化构建工具-make/Makefile_第10张图片

我们通过此命令也可以完成文件的编译工作。

4. 多文件的makefile文件书写

我们也可以在makefiel文件中添加多层依赖关系,达到多文件的编译工作:

【hello Linux】Linux项目自动化构建工具-make/Makefile_第11张图片

【hello Linux】Linux项目自动化构建工具-make/Makefile_第12张图片

同样可以完成上述功能

5. 缓冲区

在Linux系统中是存在缓冲区的,输入的数据显示的时候不会直接显示到显示器上,而是会先

保存在一个缓冲区中,这个缓冲区是以行为单位进行刷新的,直到缓冲区满、或者是遇到

\n、或者程序结束,才会输出到显示器上。

下面给个简单的例子具体体验下:

【hello Linux】Linux项目自动化构建工具-make/Makefile_第13张图片

输出hello linux!后,在下一行中停5秒,然后才会出现命令行的输出操作!

【hello Linux】Linux项目自动化构建工具-make/Makefile_第14张图片

 没加\n,我们执行./hello命令后看到首先停5秒后,才输出hello linux!

这是为什么?程序难道不是顺序执行的吗?

程序当然是顺序执行的,但是hello linux!语句首先被保存在缓冲区中,此语句太短,达不到缓冲区

行刷新的要求,那么停5秒,然后程序退出时,才会将缓冲区的内容刷新到显示器上。

有没有什么办法能将缓冲区的数据立即刷新到显示器上呢?

fflush则可以达到此效果。

【hello Linux】Linux项目自动化构建工具-make/Makefile_第15张图片

坚持打卡!

你可能感兴趣的:(Linux,linux)