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

目录

一、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文件里输入相应依赖方法和依赖关系)

  • 36
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值