Makefile入门知识-----00

1.什么是make?

make是工程管理工具,来实现项目的自动化编译。

2.上面既然说了make,接着就来说说Makefile.

2.1 什么是Makefile?

当我们输入make命令后,make工程管理工具会自动识别此目录下的Makefile文件,然后执行Makefile中的规则,这样子就实现了项目的自动化编译。


比如C语言中,只有源文件才会参与编译。当只有某些文件做了修改,那么就重新编译整个项目是一种非常不可取的做法。我们需要一种方式,能帮我们自动判断,哪些文件做了修改,哪些文件修改重新编译,哪些文件需要先编译,哪些文件需要后编译。Makefile就能帮助我们来完成这个任务。Makefile仅仅是一个文件,里边有很多的规则,来说明如何编译,编译的顺序。这里是根据文件更新的时间戳来判断文件的修改时间。

2.2 Makefile必须是Makefile么?

这个问题看起来是句废话,其实不然,上面已经说清楚了,Makefile其实就是一个文件的名字。只不过这个名字是make工程管理工具默认会去读取的文件名字。其实,理解了这一层逻辑就会明白,既然Makefile是make默认读取的文件名字,那么肯定可以不使用默认的名字。那么,下面就来说一说不适用默认文件名字的方法:那就是使用-f选项,在之后添加你指定的编译规则的文件名字(这里的名字肯定是可以随意去取)。就是如下格式:

    make -f filename

2.3 Makefile的整体运行逻辑规则

Makefile中的规则有很多,有很多细节上的规则。这里,我们先不说这些细节,先说整体上Makefile的逻辑运行规则。

  • 1.先说说什么是Makefile中一条规则?
    一条规则一般由以下几个部分组成:
    目标:依赖列表
    [tab]命令列表
    这一条规则的运行逻辑是:为了生成目标文件,首先要依赖于依赖列表中的文件全部存在,依赖列表中文件全部存在的情况下,会执行命令列表中的命令去生成目标文件。
  • 2.Makefile中所有规则的运行逻辑?
    其中第一条规则中的“目标”,将会成为终极目标。我们的最终目的,就是为了生成这个目标的。 其他的规则之间,没有必然的顺序关系。
    例如,在Makefile文件内容如下时:
A:B C D
    x命令
B:b1
    xx命令
C:c1
    xxx命令
D:d1
    xxxx命令

A为终极目标,当B C D全部存在时,才会执行x命令去生成终极目标A。当B、C、D中有某一些不存在时,make会去寻找不存在的生成规则,然后执行对应的命令去生成。例如当B、D都不存在时候,make会去寻找B:b1 D:d1这两条规则分别执行xx命令和xxxx命令去生成B和D,最后在B、C、D都生成的情况下,执行x命令,生成终极目标A。至此,这个Makefile的执行过程就完结了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值