Linux之make/makefile

make/makefile是什么?

make是一条命令。makefile是一个文件,makefile包含了依赖关系和依赖方法。两个搭配使用,完成项目自动化构建,达到形成可执行程序的目的。

make/makefile使用详情

我们创建一个Makefile文件(makefile也行)
在这里插入图片描述
使用vim编辑makefile文件
Linux之make/makefile_第1张图片
依赖方法的另一种写法:$@代表目标文件、 $^代表源文件
Linux之make/makefile_第2张图片
注意:伪目标不需要依赖关系,只需要依赖方法

我们编译程序时,也可以写成完整编译过程命令。
Linux之make/makefile_第3张图片


makefile自顶向下扫描命令,默认执行第一个命令,所有我们直接make,执行的就是第一个命令。(当然,我们也可以把完整命令写出来,即make mytest)
在这里插入图片描述
其他命令就要带名字
在这里插入图片描述
如果是这样编写makefile:
Linux之make/makefile_第4张图片

.o到.s到.i到.c 是一个完整的依赖关系,因此我们直接make,可以一次使用这4条编译命令。
Linux之make/makefile_第5张图片

我们更改一下makefile文件,试一下是不是真的这样?
Linux之make/makefile_第6张图片
我们再次make,发现执行的是clean的命令。因此我们直接make,执行的就是第一个命令。
在这里插入图片描述


如果没有设置成伪目标,且源文件没有被修改,我们生成可执行程序的命令只会成功一次。
Linux之make/makefile_第7张图片
而伪目标总是能被执行,因此make clean 总是会成功
在这里插入图片描述
我们将mytest也设置成伪目标,发现一直 make 也会成功。
Linux之make/makefile_第8张图片
在这里插入图片描述
但是我们一般不把生成可执行程序的命令设置成伪目标,因为没有意义。

makefile一次编译两个源文件

我们设了一个伪目标all,all依赖了myexe和myload,而要生成myexe和myload,依靠下面两个依赖关系,因此会执行下面两个依赖方法,从而一次性编译两个源文件。
Linux之make/makefile_第9张图片
此时make一些,就编译两个源文件。
在这里插入图片描述
经典案例:
Linux之make/makefile_第10张图片

你可能感兴趣的:(linux,运维,服务器)