Linux项目自动化构建工具-make/makefile 介绍及使用

使用背景

在工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义一系列
规则来指定什么文件需要先编译,什么文件需要后编译,哪些文件需要重新编译,或者更复杂
的功能操作
makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编
译,提高效率
make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE也都有这个命
令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。
而 make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。

make/makefile的原理及简单例子

make 会在当前目录下找名字叫“Makefile”或“makefile”的文件。 如果找到,它会找文件中的第一个目标文件,并把这个文件作为最终的目标文件。
那我们来举个例子
以图片内的代码为例
将myfile.c文件内写好代码
Linux项目自动化构建工具-make/makefile 介绍及使用_第1张图片
先创建Makefile文件,这里makefile和Makefile都可以
Linux项目自动化构建工具-make/makefile 介绍及使用_第2张图片

在Makefile中写入如下代码,那么我们就会问 myfile:myfile.c是什么意思?
myfile与myfile.c为依赖关系
而下面 gcc -o myfile myfile.c为依赖方法,我们解释下,我们想形成myfile可执行那么我们要依赖myfile.c文件,如何依赖就需要依赖方法来将myfile与myfile.c进行相关操作。也就是需要依赖关系依赖方法来形成可执行程序。

Linux项目自动化构建工具-make/makefile 介绍及使用_第3张图片
然后我们make以下就形成了myfile可执行程序,图中绿字可见。在./myfile 形成 。屏幕上打印处hello
Linux项目自动化构建工具-make/makefile 介绍及使用_第4张图片

那么在工程中有些是需要进行清理的,如果每次都手动清理第一是不方便,第二也有可能误操作,因此我们可以在Makefile中添加清理的操作。而清理需要总需要被执行的,因此用**.PHONY来修饰。下面对.PHONY**有相关解释
Linux项目自动化构建工具-make/makefile 介绍及使用_第5张图片

可以看到在输入make clean命令后执行了 rm -f myfile的命令查看结果myfile被清理掉了。
Linux项目自动化构建工具-make/makefile 介绍及使用_第6张图片
注意:
在写依赖方法时前面需要TAB一下空格
Linux项目自动化构建工具-make/makefile 介绍及使用_第7张图片

.PHONY

.PHONY来修饰clean,而**.PHONY的作用为设置为伪目标,伪目标的特性是总是被执行的。
为了方便大家理解我们来看这个例子
Linux项目自动化构建工具-make/makefile 介绍及使用_第8张图片
图中我们多次
make**,但是除了第一次形成可执行外第二次三次都没形成可执行,这样为不是总是被执行,如果我们将myfile设置成总是被执行,是否可以多次形成。
Linux项目自动化构建工具-make/makefile 介绍及使用_第9张图片
在设置给myfile设置**.PHONY后,可以看到make可以多次形成
Linux项目自动化构建工具-make/makefile 介绍及使用_第10张图片
一般自己形成的可执行不用
.PHONY**去修饰,大量代码的编译需要大量时间, make在执行makefile规则中,根据语法规则,会分析目标对象与依赖对象的时间信息,判断是否在上一次生成后,源文件发生了修改,修改后的源文件比可执行的时间要晚,make判断发生了修改需要重新生成,因此一般只需要让修改过后的重新编。在这里插入代码片

你可能感兴趣的:(知识专题,Linux知识介绍及讲解,linux,自动化,运维)