一、make简介

make是一个指令工具,它解释makefile中的指令或者说规则。makefile文件描述了整个工程中所有文件的编译顺序,编译规则makefile也有自己的编写规则,通常,我们所使用的IDE都会生成相应的makefile,然后再根据makefile来进行编译,只是这些操作是由IDE来完成,我们只需要点击一个编译按钮。

二、什么是makefile

在我们执行make之前,需要有一个名为makefile或Makefile的文件。这个文件用来告诉make需要完成什么样的操作。我们可以简单的把makefile认为是一份定义了源文件间依赖关系、如何编译各个源文件并生成可执行文件的说明书。

三、 为什么需要makefile

Makefile是用来管理工程的。
在一个正式的软件项目中,由很多个.c和.h文件构成,此时如果直接在命令行编译,就会像这样: gcc a.c b.c c.c d.c e.c f.c g.c -o exe 每次编译都要输入一堆东西很麻烦,这个问题严重影响工作效率,怎么办?Makefile来解决。
除此之外,make还有一个优点,那就是当你修改你的文件以后,make只会编译更新的文件以及它相关依赖的文件。这里后边进行详细的解释,意思就是,当你只修改了几十个文件中的某一个文件时,make只会重新编译跟你修改的文件有关联的文件,而不是所有的文件。这就大大的减短了编译的时间。

四、makefile的基本结构

TARGET... : PREREQUISITES...
    COMMAND
    ...
    ...

TARGET:(目标)规则的目标,最终生成文件的名字或者是中间过程文件名,也可以是make执行的动作的名称,目标定格写,后面是冒号(冒号后面是依赖)
PREREQUISITES:(依赖)规则的依赖,生成目标所必须的文件名列表。依赖是用来产生目标的原材料。
COMMAND:(命令)规则的命令。规则需要执行的动作。命令前面一定是Tab,不能是定格,也不能说多个空格。命令就是要生成那个目标需要做的动作。

注意:这里需要注意的是,命令前面使用的是TAB键,而不是空格,使用空格会出现错误。

四、makefile的基本工作原理

其一,当我们执行 make xx 的时候,Makefile会自动执行xx这个目标下面的命令语句。
其二,当我们make xx的时候,是否执行命令是取决于依赖的。依赖如果成立就会执行命令,否则不执行。
其三,我们直接执行make 和make 第一个目标 效果是一样的。(第一个目标其实就是默认目标)

五、小结

个人理解,
目标:就类似于关键字,或者类似于window下面的快捷键。make 关键字,就是执行目标关键字所囊括的执行命令。
关键字冒号:后面是依赖文件,是下面的一个或多个命令在执行时所需要的素材。
命令:就是你所需要执行的命令,多个命令时,make 关键字 就可以一次执行多个命令,方便快捷。

最后修改:2018 年 12 月 07 日
如果觉得我的文章对你有用,请随意赞赏