【Linux自动化构建工具】make/Makefile

发布时间:2024年01月02日

目录

一、make/Makefile简介

二、Makefile文件操作

1、Makefile的基本规则

2、举个🌰

3、伪目标

三、Makefile最新的可执行程序

1、stat指令

2、touch指令

3、Makefile是如何得知可执行程序是最新的?

一、make/Makefile简介

make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。

makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命 令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一 种在工程方面的编译方法。

二、Makefile文件操作

1、Makefile的基本规则

Makefile由依赖方法依赖关系组成。

注意:

依赖文件列表可以有一个,也可以有多个。

tab键不能用空格键替代。?

2、举个🌰

1)创建一个test.c和Makefile文件,vim Makefile输入以下指令。保存退出。

2)当我们想编译test.c时,直接make,就可以自动调用Makefile的依赖方法。

3)Makefile可以构建项目,同时也可以清理项目?

.PHONY是Makefile的关键字,声明是伪目标。?

4)当有多个目标文件时,只会从上到下执行第一个目标文件。想要执行其他目标文件,需要make+目标文件。

3、伪目标

伪目标最大的特点是:总是会根据依赖关系,执行依赖方法

习惯于把clean设置成伪目标。

三、Makefile最新的可执行程序

1、stat指令

可以查看文件重要的三个时间(AMC)

Access:文件最近被访问的时间。

Modify:文件内容最近的修改时间。

Change:文件属性最近的修改时间。

因为文件一定要被访问,才能完成文件内容的修改,所以Modify更新,Access一定也会更新

因为文件内容被修改,文件大小一定发生改变,所以Modify更新,Change一定也会更新

但是Access/Change改变并不会造成另外两个时间也改变

2、touch指令

touch指令有两个作用:创建一个新的文件;更新AMC时间为系统时间。

touch [文件名],AMC时间都更新

touch [文件名] -a ,Access时间更新

touch [文件名] -m,Modify时间更新

touch [文件名] -c,Change时间更新

3、Makefile是如何得知可执行程序是最新的?

【答案】根据文件的最近修改时间来的。?

可执行文件是依赖目标文件产生的,所以可执行文件的修改时间一定大于目标文件的修改时间。如果可执行文件的修改时间小于目标文件的修改时间时,这时候一定可以make成功。

四、多文件理解Makefile

1、命令行形成可执行文件

?2、形成 .o 文件合并链接形成可执行文件

1)在Makefile里输入依赖方法和依赖关系,保存。

?2)make 会默认形成相应的可执行程序和文件。

3)clean 清理(需要在Makefile文件里输入相应依赖方法和依赖关系)

文章来源:https://blog.csdn.net/Dawn_Lillian/article/details/135297075
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。