构建无忧:探索 Linux 项目自动化构建神器-make/Makefile

构建无忧:探索 Linux 项目自动化构建神器-make/Makefile_第1张图片

目录

  • 一.make/Makefile的介绍
    • 1.理解make/Makefile
    • 二.make/Makefile的使用
      • 1.基本使用
      • 2.PHONY
      • 3.特殊符号拓展

一.make/Makefile的介绍

1.理解make/Makefile

编写Makefile是Linux开发中一项重要的技能,熟练的运用这个工具能提高编译效率,帮助你完成大型工程。Makefile带来的最大好处就是——自动化编译,一旦将Makefile文件写好,只需要一个make命令,即可完成预期的编译,大大提高了软件开发的效率。

二.make/Makefile的使用

1.基本使用

下面我来简单演示下其功能:
例如现在mycode.c文件下编写了如此代码:
构建无忧:探索 Linux 项目自动化构建神器-make/Makefile_第2张图片
正常情况下我们想要编译这段代码,会进行这样的操作:
构建无忧:探索 Linux 项目自动化构建神器-make/Makefile_第3张图片
如此一行在只需编译一个文件时倒也不麻烦,但是在以后进行更大规模的开发时,一句一文件的编译就显得繁琐。这时就能用上我们自动化构建工具make/Makefile了。首先我们在同目录下创建Makefile文件用来编写依赖关系与方法:
构建无忧:探索 Linux 项目自动化构建神器-make/Makefile_第4张图片
其中的clean可以方便删除生成的文件:
现在我们再想编译mycode.c只需输入命令make即可:
构建无忧:探索 Linux 项目自动化构建神器-make/Makefile_第5张图片

2.PHONY

接下来在我想要多次编译时,其给出了这样的提示:
构建无忧:探索 Linux 项目自动化构建神器-make/Makefile_第6张图片
他说mycode可执行文件已经是最新的了,没有必要再次编译生成。我们知道文件包括文件内容和文件属性,其中修改时间是文件的重要属性。而自动化构建工具为了提升编译效率做了规定:当源文件的修改时间新与可执行文件时,说明源文件进行了修改,会重新进行编译,反之不会。
构建无忧:探索 Linux 项目自动化构建神器-make/Makefile_第7张图片
我们在修改过mycode.c的内容后,利用stat命令查看文件属性可以观察到,修改时间发生了变化,这是就可以在使用make再次编译生成了。

Modify:文件内容(修改内容会更新)
Change:文件属性(如文件权限)
Access:访问文件

那如果我们不想通过比较时间直接能编译文件该如何操作呢?这里就要了解到PHONY
PHONY修饰的称为伪目标,其特点就是总是被执行的。
构建无忧:探索 Linux 项目自动化构建神器-make/Makefile_第8张图片

构建无忧:探索 Linux 项目自动化构建神器-make/Makefile_第9张图片
PHONY使得某个依赖关系总是被执行。

3.特殊符号拓展

我们可以使用 $^ 代替依赖关系中冒号右边的文件$@ 代表冒号左边的文件 如果冒号右边有多个文件时可以用 $< 代表第一个文件:
构建无忧:探索 Linux 项目自动化构建神器-make/Makefile_第10张图片

在这里插入图片描述
从上图我们可以看到输入make命令后,会显示我们编写的依赖方法,如果我们不想显示,可以怎么操作呢?
构建无忧:探索 Linux 项目自动化构建神器-make/Makefile_第11张图片
这样再进行操作时就不会有任何提示了。
构建无忧:探索 Linux 项目自动化构建神器-make/Makefile_第12张图片

你可能感兴趣的:(Linux入门,linux,自动化,运维)