一、明白使用makefile的原因

有时候我们在写命令的时候要写很多命令,有一些命令还是重复的命令,我们只需要把这些命令和依赖关系弄明白,把这些常用的命令写进makefile里面就可以了。

二、make的原理

Linux使用makefile的用法

注意:我们有时候写了几组命令并且期待他们能够全部运行,但是make工作的时候先找第一个依赖目标。然后找第一个目标的依赖关系,如果完成了之后就不会再进行了。

所以我们要用一种方法把他们两个联系起来,一般是用all:来当第一个目标,跟两个建立依赖关系,这样就能执行到第二个目标libmath56

Linux使用makefile的用法

三、使用makefile的用法

Linux使用makefile的用法

注意一些格式:冒号前面是想生成的文件,冒号后面的是它所依赖的文件,就是从哪个文件才能变过来,然后找到之后回车按一下tab键继续输入命令。

我这里面写的clean是为了清除临时文件,这些临时文件可能会影响编译活动。还有那*.o的意识是通配符的意思。

 clean强制删除临时文件,.o文件和可执行文件以便下面更方便修改

下面我再举一个例子来看清除他的依赖关系是怎么样的,我先把.c文件变成.o,再把.o的文件变成可执行文件。

Linux使用makefile的用法

可以看出来我先写的第一句,hello是依赖于.o的,但是文件里面没有.o文件,所以它暂时不执行,到了第二句hello.o是依赖于.c的,他就执行,然后再回去执行第一句。

Linux使用makefile的用法

Linux使用makefile的用法

可以看出我的文件夹里面出来了.o和可执行文件。

注意的事项

(1)关于头文件的引用,有时候在makefile文件中写代码make 的时候会发现缺少头文件,这时候就需要用-I来指定头文件的路径

  Linux使用makefile的用法

还要注意gcc命令后面是不能加空格的。

(2)有时候会出现一些错误,比如下面的错误

Linux使用makefile的用法

这是跟make的机制有关系的,make工具在使用的时候会看看文件是不是有修改的地方,如果没有修改的话它是不会去重新编译的。

(3)一个依赖关系下面可以有多行命令,命令之间是可以用&&来连接的。

 Linux使用makefile的用法

但是注意cd命令只能管一行命令,如果另起一行要重新写cd,如果加上一个反斜杠/  的话,续行符是可以转到下一行直接写代码,不需要再加一个tab键。

(4)

Linux使用makefile的用法

subprog意思是子文件,cd到子文件下面。
子文件中的makefile文件只对子文件中的文件进行编译。
Linux使用makefile的用法
可以看出在子文件中也有一个make。

四、Makefile中变量的使用

Linux使用makefile的用法

(1)环境变量:装在操作系统上,如果电脑装的应用想使用一个共同变量就从环境变量里面找。

(2)变量的应用:(下面这个图开头代替gcc的变量是CC)

Linux使用makefile的用法

我们可以看出变量可以代替文件的路径,gcc和g++等命令,文件类型,库文件,这样的好处就是到时候直接修改变量的值就行了。

(如果库文件在根目录下面有的话,就不用写-L(指定搜索路径)了)

注意:讲一下通配符:

Linux使用makefile的用法

这个意思就是所遇哦*.o的文件生成一个test文件。

五、安装

Linux使用makefile的用法

install表示安装,意思就装到bin文件夹中,bin文件夹中都是可执行文件,也就是说我们可以自己创造命令,到时候直接调用就行了,这就是安装。

Linux使用makefile的用法
六、后缀规则:

Linux使用makefile的用法

它表示所有的.o文件依赖于.c文件,$表示依赖关系的第一个文件,

Linux使用makefile的用法

这两种写法一样,INCLUDE是变量。

七、在makefile中可以调用头文件。

Linux使用makefile的用法


相关文章: