Makefile
文章平均质量分 85
Makefile 的编写
wohu007
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
浅显易懂 Makefile 入门 (12)— Makefile 常见的错误信息
1. 常见的错误信息make 执行过程中所产生错误并不都是致命的,特别是在命令行之前存在 -、或者 make 使用 -k 选项执行时。make 执行过程的致命错误都带有前缀字符串 ***。错误信息都有前缀,一种是执行程序名作为错误前缀(通常是 make);另外一种是当 Makefile 本身存在语法错误无法被 make 解析并执行时,前缀包含了 Makefile 文件名和出现错误的行号。在下述的错误列表中,省略了普通前缀:[FOO] Error NN[FOO] signal description原创 2020-12-22 22:16:51 · 18013 阅读 · 0 评论 -
浅显易懂 Makefile 入门 (11)— make 命令参数和选项汇总、make 中特殊目标汇总
1. make 命令参数和选项汇总在执行 make 命令时,有的时候需要加上一下参数选项来保证我们的程序的执行,比如只打印命令但不执行使用的参数是 -n ;只执命令不打印命令的参数选项是 -s;包含其它文件的路径参数选项是 -include;列举一下 make 可以使用的参数选项,以及它们的功能是什么。参数选项功能-b,-m忽略,提供其他版本 make 的兼容性-B,–always-make强制重建所有的规则目标,不根据规则的依赖描述决定是否重建目标文件。原创 2020-12-21 22:17:07 · 3588 阅读 · 0 评论 -
浅显易懂 Makefile 入门 (10)— 嵌套执行 make、export 的使用
1. 嵌套执行 make在一个大的工程文件中,不同的文件按照功能被划分到不同的模块中,每个模块可能都会有自己的编译顺序和规则,如果在一个 Makefile 文件中描述所有模块的编译规则,就会很乱,执行时也会不方便,所以就需要在不同的模块中分别对它们的规则进行描述,也就是每一个模块都编写一个 Makefile 文件,这样不仅方便管理,而且可以迅速发现模块中的问题。这样我们只需要控制其他模块中的 Makefile 就可以实现总体的控制,这就是 make 的嵌套执行。如何来使用呢?举例说明如下:subsys原创 2020-12-20 22:39:56 · 4232 阅读 · 0 评论 -
浅显易懂 Makefile 入门 (09)— include 文件包含、MAKECMDGOALS
1. include文件包含当 make 读取到 include 关键字的时候,会暂停读取当前的 Makefile,而是去读 include 包含的文件,读取结束后再继读取当前的 Makefile 文件。include 使用的具体方式如下:include <filenames>filenames 是 shell 支持的文件名(可以使用通配符表示的文件)。注意:include 关键字所在的行首可以包含一个或者是多个的空格(读取的时候空格会被自动的忽略),但是不能使用 Tab 开始,否原创 2020-12-19 13:06:32 · 10499 阅读 · 2 评论 -
浅显易懂 Makefile 入门 (08)— 默认 shell (/bin/sh)、命令回显、make参数(-n 只显示命令但不执行,-s 禁止所有回显)、单行命令、多行命令、并发执行
1. 默认 shellMakefile 所使用的命令是由 shell 命令行组成,他们是一条一条执行的。多个命令之间要使用分号隔开,Makefile 中的任何命令都要以 tab 键开始。多个命令行之间可以有空行和注释行,在执行规则时空行会被自动忽略。通常系统中可能存在不同的 shell 。但是 make 处理 Makefile 过程时,如果没有明确的指定,那么对所有规则中的命令行的解析使用 bin/sh 来完成。如:all: echo $(SHELL)执行 make 之后结果wohu@u原创 2020-12-17 22:11:41 · 4028 阅读 · 0 评论 -
浅显易懂 Makefile 入门 (07)— 其它函数(foreach 、if、call、origin )
1. foreach 函数foreach 函数定义如下:$(foreach <var>,<list>,<text>)函数的功能是:把参数 <list> 中的单词逐一取出放到参数 <var> 所指定的变量中,然后再执行 <text> 所包含的表达式。每一次 <text> 会返回一个字符串,循环过程中,<text> 的返所返回的每个字符串会以空格分割,最后当整个循环结束的时候,<text> 所返原创 2020-12-16 22:23:05 · 1022 阅读 · 1 评论 -
浅显易懂 Makefile 入门 (06)— 文件名操作函数(dir、notdir、suffix、basename、addsuffix、addprefix、join、wildcard)
编写 Makefile 的时候,很多情况下需要对文件名进行操作。例如获取文件的路径,去除文件的路径,取出文件前缀或后缀等等。注意:下面的每个函数的参数字符串都会被当作或是一个系列的文件名来看待。1. 取目录函数 dir函数使用格式如下:$(dir <names>)函数说明:函数的功能是从文件名序列 names 中取出目录部分,如果names 中没有 / ,取出的值为 ./ 。返回值为目录部分,指的是最后一个反斜杠之前的部分。如果没有反斜杠将返回 ./。实例:OBJ=$(dir原创 2020-12-15 22:31:02 · 2442 阅读 · 1 评论 -
浅显易懂 Makefile 入门 (05)— 字符串处理函数(patsubst、subst、strip、findstring、filter、filter-out、sort、word)
1. 字符串函数格式函数调用的格式如下:$(<function> <arguments>)或者是${<function> <arguments>}其中,function 是函数名;arguments 是函数的参数,参数之间要用逗号分隔开;而参数和函数名之间使用空格分开。调用函数的时候要使用字符 $,后面可以跟小括号也可以使用花括号。2. 模式字符串替换函数 patsubst函数使用格式如下:$(patsubst <patt原创 2020-12-14 22:00:01 · 1463 阅读 · 0 评论 -
浅显易懂 Makefile 入门 (04)— 条件判断 (ifeq、ifneq、ifdef 和 ifndef)、定义命令包 define 和伪目标
1. Makefile 条件判断作用条件语句可以根据一个变量的值来控制 make 执行或者时忽略 Makefile 的特定部分,条件语句可以是两个不同的变量或者是常量和变量之间的比较。下面是条件判断中使用到的一些关键字:关键字功能ifeq判断参数是否不相等,相等为 true,不相等为 falseifneq判断参数是否不相等,不相等为 true,相等为 falseifdef判断是否有值,有值为 true,没有值为 falseifndef判断是否有值,没有值为原创 2020-12-13 23:31:38 · 39559 阅读 · 1 评论 -
浅显易懂 Makefile 入门 (03)— 目标文件搜索(VPATH 和 vpath 的区别和使用)、隐含规则
1. 目标文件搜索(VPATH和vpath)如果需要的文件是存在于不同的路径下(即源文件与 Makefile 文件不在同一个路径下),在编译的时候就用到了 Makefile 中为我们提供的目录搜索文件的功能。常见的搜索的方法的主要有两种:VPATH 是变量,使用时需要指定文件的路径,是搜索路径下所有的文件;vpath 是关键字,按照模式搜索,也可以说成是选择搜索。搜索的时候不仅需要加上文件的路径,还需要加上相应限制的条件;1.1 VPATH在 Makefile 中可以这样写:VPATH :原创 2020-12-12 21:55:32 · 4617 阅读 · 0 评论 -
浅显易懂 Makefile 入门 (02)— 普通变量和自动变量定义、使用($@、$^、$< 作用)、变量覆盖 override、变量的来源 origin
1. 变量的定义Makefile 文件中定义变量的基本语法如下: 变量的名称=值列表变量的名称可以由大小写字母、阿拉伯数字和下划线构成。等号左右的空白符没有明确的要求,因为在执行 make 的时候多余的空白符会被自动的删除。至于值列表,既可以是零项,又可以是一项或者是多项。如: name_list = aa bb cc调用变量的时候可以用 $(name_list) 或者是 ${name_list} 来替换,这就是变量的引用。实例:OBJ=main.o test1.o test2.o tes原创 2020-12-11 22:16:13 · 1292 阅读 · 0 评论 -
浅显易懂 Makefile 入门 (01)— 什么是Makefile、为什么要用Makefile、Makefile规则、Makefile流程如何实现增量编译
1. 什么是 MakefileMakefile 文件描述了 Linux 系统下 C/C++ 工程的编译规则,它用来自动化编译 C/C++ 项目。一旦写编写好 Makefile 文件,只需要一个 make 命令,整个工程就开始自动编译,不再需要手动执行 GCC 命令。一个中大型 C/C++ 工程的源文件有成百上千个,它们按照功能、模块、类型分别放在不同的目录中,Makefile 文件定义了一系列规则,指明了源文件的编译顺序、依赖关系、是否需要重新编译等。Makefile 可以简单的认为是一个工程文件的编译原创 2020-12-10 22:27:13 · 21630 阅读 · 0 评论
分享