Linux Makefile
文章平均质量分 76
# Linux Makefile
CodeAllen嵌入式
CSDN博客专家,曾中科院无人机软件研发,现TOP通信外企高级软件工程师,专注通信电子及嵌入式软件方向职业规划,全网技术矩阵粉丝10w+,欢迎交流一起成长!
展开
-
10.Makefile ifeq、ifneq、ifdef和ifndef
日常使用 Makefile 编译文件时,可能会遇到需要分条件执行的情况,比如在一个工程文件中,可编译的源文件很多,但是它们的类型是不相同的,所以编译文件使用的编译器也是不同的。手动编译去操作文件显然是不可行的(每个文件编译时需要注意的事项很多),所以 make 为我们提供了条件判断来解决这样的问题。需要解决的问题:要根据判断,分条件执行语句。条件语句的作用:条件语句可以根据一个变量的值来控制 make 执行或者时忽略 Makefile 的特定部分,条件语句可以是两个不同的变量或者是常量和变量之间的比较。转载 2021-07-03 22:41:52 · 1608 阅读 · 0 评论 -
9.Makefile隐含规则
这个章节讲述的是 Makefile 的隐含规则,所谓的隐含规则就是需要我们做出具体的操作,系统自动完成。编写 Makefile 的时候,可以使用隐含规则来简化Makefile 文件编写。实例:test:test.ogcc -o test test.otest.o:test.c我们可以在 Makefile 中这样写来编译 test.c 源文件,相比较之前少写了重建 test.o 的命令。但是执行 make,发现依然重建了 test 和 test.o 文件,运行结果却没有改变。这其实就是隐含规则转载 2021-07-03 22:40:19 · 1088 阅读 · 0 评论 -
8.Makefile路径搜索使用案例
我们了解了一下路径搜索的使用方式,我们再来看一下具体的使用方法。为了体验实例的效果的更加明显,我们按照源代码树的布局来放置文件。我们把源代码放置在src目录下,包含的文件文件是:list1.c、list2.c、main.c 文件,我们把头文件包含在 include 的目录下,包含文件 list1.h、list2.h 文件。Makefile 放在这两个目录文件的上一级目录。我们按照之前的方式来编写 Makefile 文件:main:main.o list1.o list2.ogcc -o $@ $转载 2021-07-03 22:38:15 · 1034 阅读 · 0 评论 -
7.Makefile目标文件搜索(VPATH和vpath)
我们都知道一个工程文件中的源文件有很多,并且存放的位置可能不相同(工程中的文件会被放到不同的目录下),所以按照之前的方式去编写 Makefile 会有问题。我们之前列举的例子,所有的源文件基本上都是存放在与 Makefile 相同的目录下。只要依赖的文件存在,并且依赖规则没有问题,执行 make命令整个工程就会按照对我们编写规则去编译,最终会重建目标文件。那如果需要的文件是存在于不同的路径下,在编译的时候要去怎么办呢(不改变工程的结构)?这就用到了 Makefile 中为我们提供的目录搜索文件的功能。常转载 2021-06-14 00:30:39 · 1317 阅读 · 0 评论 -
6.Makefile自动化变量
关于自动化变量可以理解为由 Makefile 自动产生的变量。在模式规则中,规则的目标和依赖的文件名代表了一类的文件。规则的命令是对所有这一类文件的描述。我们在 Makefile 中描述规则时,依赖文件和目标文件是变动的,显然在命令中不能出现具体的文件名称,否则模式规则将失去意义。那么模式规则命令中该如何表示文件呢?就需要使用“自动化变量”,自动化变量的取值根据执行的规则来决定,取决于执行规则的目标文件和依赖文件。下面是对所有的自动化变量进行的说明:自动化变量 说明 $@ 表示规则.转载 2021-06-14 00:27:52 · 944 阅读 · 0 评论 -
5.Makefile变量的定义和使用
变量对于我们来说是不陌生的,在学习各种编程语言时会经常用到。就拿C语言来说,变量的使用是十分常见的,变量可以用来保存一个值或者是使用变量进行运算操作。Makefile 中的变量也是这样,我们可以利用它来表示某些多处使用而又可能发生变化的内容,不仅可以节省重复修改的工作,还可以避免遗漏。变量的定义Makefile 文件中定义变量的基本语法如下:变量的名称=值列表Makefile 中的变量的使用其实非常的简单,因为它并没有像其它语言那样定义变量的时候需要使用数据类型。变量的名称可以由大小写.转载 2021-05-25 01:56:57 · 1189 阅读 · 0 评论 -
4.Makefile通配符的使用
Makefile 是可以使用 shell 命令的,所以 shell 支持的通配符在 Makefile 中也是同样适用的。 shell 中使用的通配符有:"*","?","[...]"。具体看一下这些通配符的表示含义和具体的使用方法。通配符 使用说明 * 匹配0个或者是任意个字符 ? 匹配任意一个字符 [] 我们可以指定匹配的字符放在 "[]" 中 通配符可以出现在模式的规则中,也可以出现在命令中,详细的使用情况如下。实例 1:.PHONY:clean.转载 2021-05-25 01:54:15 · 945 阅读 · 0 评论 -
3.Makefile的工作流程
简单了解一下 Makefile 书写规则之后,再来深入研究一下 Makefile 的是怎样工作的?当我们在执行 make 条命令的时候,make 就会去当前文件下找要执行的编译规则,也就是 Makefile 文件。我们编写 Makefile 的时可以使用的文件的名称 "GNUmakefile" 、"makefile" 、"Makefile" ,make 执行时回去寻找 Makefile 文件,找文件的顺序也是这样的。我们推荐使用 Makefile(一般在工程中都这么写,大写的会比较的规范)。如果文件不存在转载 2021-05-25 01:52:23 · 908 阅读 · 0 评论 -
2.Makefile文件中包含哪些规则?
想要书写一个完整的 Makefile文件,需要了解 Makefile 的相关的书写规则。我们已经知道了 Makefile 描述的是文件编译的相关规则,它的规则主要是两个部分组成,分别是依赖的关系和执行的命令,其结构如下所示:targets : prerequisites command或者是targets : prerequisites; command command相关说明如下:targets:规则的目标,可以是 Object File(一般称它为中间文件),...转载 2021-05-25 01:50:31 · 1520 阅读 · 0 评论 -
1.Makefile文件是什么?
我们教程主要是讲的是 Makefile 。很多 Linux(Unix) 做开发的初学者不了解 Makefile 是什么,甚至大部分 Windows 开发工程师对 Makefile 都特别陌生。这个其实很正常,如果你是在 Windows 下作开发的话不需要去考虑这个问题,因为 Windows 下的集成开发环境(IDE)已经内置了 Makefile,或者说会自动生成 Makefile,我们不用去手动编写。Linux 中却不能这样,需要我们去手动的完成这项工作。Linux 下可以学习的开发语言有很多,常见的有转载 2021-05-25 01:47:36 · 870 阅读 · 0 评论