makefile项目管理-规则和过程

目录

1、makefile基本规则

2、makefile执行过程 

3、makefile的运行规则


1、makefile基本规则

        (1)命名:makefile 和 Makefile

        (2)makefile文件:里面是多个命令的集合,使用make命令执行该文件

        (3)命令的语法规则(以gcc为例):

目标:依赖条件
(一个tab的缩进)命令
hello:hello.c
    gcc hello.c -o hello

2、makefile执行过程 

以gcc编译hello.c为例

(1)在文件夹下创建makefile文件

(2)创建并编写hello.c文件输出helloworld

 (4)按照语法规则编写makefile文件

(4)在该文件夹下运行make命令

可以看到make命令将makefile中的命令执行,并生成了对应的目标,如果makefile里面有多个命令,就会全部执行,而这就是makefile的作用。

3、makefile的运行规则

(1)若想生成目标,检查规则中的依赖条件是否存在,如果不存在,则寻找是否有规则用来生成该依赖文件。(依旧以gcc为例,将gcc编译成执行文件的过程分为两步)

hello:hello.o
    gcc hello.o -o hello

hello.o:hello.c
    gcc -c hello.c -o hello.o

这次代码将gcc编译分成了两个阶段,执行make命令后,在执行第一个命令的时候会发现文件夹中没有hello.o此时就会寻找makefile文件的命令集中是否存在命令可以生成该文件,便会先运行第二个命令,然后再执行第一个命令。

(2)检查规则中的目标是否需要更新,必须先检查它的所有依赖,如果有任意一个依赖需要更新,则目标必须更新。

        注意:在gcc的四个过程中,编译的过程是最耗时的,所以一般情况下会在makefile中将依赖文件按模块区分,将各模块编译成.o文件,最后通过链接完成编译,这样某一个依赖更新时,其他未更新的文件就不会发生因为重新编译而浪费资源的问题。

        判断机制:执行make命令时,会判断文件的最后一次更新时间,如果依赖文件的时间比目标文件晚,说明依赖文件发生了更新,那么该命令需要重新执行,反之该命令就会认为已经执行且未发生更新,就不会产生不必要的命令执行。当然,如果目标文件不存在肯定会执行该命令。

(3)makefile默认将第一个命令作为最终目标,完成目标后就会停止运行,所以一般情况下会将需要生成的最终目标文件放在第一个命令。

        还有一个办法就是最makefile文件的第一个命令使用(ALL:最终目标文件)

        这样makefile的最终目标就是你指定的这个文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值