linux|Linux中自动构建项目——make和makefile

一 make和makefile是什么
make是一个命令,makefile是用来完成自动化构建项目的对应的文件。我们要自动化构建项目(编译源代码就自动形成可执行程序),就必须编写makefile文件。
makefile文件的两个基本要素:依赖关系和依赖方法。
依赖关系:谁要依赖谁,依赖方法:怎么依赖。
介绍makefile之前,我先引出一点关于makefile的相关操作的背景知识:makefile是可以用来自动化构建项目的,那她的依据是什么?
主要是根据文件的最新修改时间来判断。
一个文件主要包含三个时间:
1 access:文件最近被访问的时间。
2 modify:文件的内容被改变的最近的一次时间
3 change:文件的属性最近一次被改变的时间:比如文件权限的修改等。
linux|Linux中自动构建项目——make和makefile
文章图片


需要注意的是,access并不会频繁被修改,假设你cat一个文件非常的频繁,那么磁盘会被频繁访问,显然不合理。也就是说,只有累积到一定的时间后,access才会被修改。
那么就会出现这样的问题:有时候原文件的modify时间或者change时间比access时间要早。
这显然不合理,那么此时就是需要自动化构建项目的。也就是说,如果一个文件的所有时间都是最晚的,那么这个文件就是最新的。

接下来演示如何编写makefile文件
linux|Linux中自动构建项目——make和makefile
文章图片


linux|Linux中自动构建项目——make和makefile
文章图片

linux|Linux中自动构建项目——make和makefile
文章图片


第一行是依赖关系:形成mytest要依赖test.c文件
第二行以tab开头,是依赖方法,比如自动编译生成可执行程序。
之后我们用make命令来自动化构建项目,那么就会自动帮我们编译了。
.PHONY后面也是相应的依赖关系和依赖方法。
但是.PHONY修饰的是伪目标。(这里的意思是说,这两个依赖关系和依赖方法,.PHONY后面的是伪目标,不是说被.PHONY修饰的都是伪目标的意思)因为make命令自动从上往下扫描,默认执行的是第一个依赖关系和依赖方法。
因此如果我们想进行clean有关的操作的话,需要继续指定。
linux|Linux中自动构建项目——make和makefile
文章图片


有时候文件以及是最新的话,那么执行make也不会进行相关的操作了。
linux|Linux中自动构建项目——make和makefile
文章图片


关于.PHONY 她的意思是总是被执行的。与上面的make相比,只有满足一定的条件才会进行make。但是如果把.
PHONY修饰的话,就总是都可以被执行。

linux|Linux中自动构建项目——make和makefile
文章图片





【linux|Linux中自动构建项目——make和makefile】

    推荐阅读