(在shell makefile等文件中,可以认为所有变量都是字符串,+=就相当于给字符串stcat接续内容)(注意一个细节,+=续接的内容和原来的内容之间会自动加一个空格隔开) Makefile 符号@ - $ $$含义 @(用于静默执行) #示例 DIR_OBJ=./obj CMD_MKOBJDIR=if [ -d ${DIR_OBJ} ]; then exit 0; else mkdir $...
(可以用“\” 来转义,以“\%”来表示真实含义的“%”字符) 返回:函数返回被替换过后的字符串。 示例: $(patsubst %.c,%.o,x.c.c bar.c) 把字串“x.c.cbar.c”符合模式[%.c]的单词替换成[%.o],返回结果是“x.c.obar.o” 备注: 这和我们前面“变量章节”说过的相关知识有点相似。如: “$...
wildcard *.c 的含义是:找到所有的.c文件。 patsubst %.c ,%.o,$(SRC)的含义是:把所有的.c文件替换成.o文件。 图中为Makefile完整代码 这里的%.c,%.o是一个通配符,Makefile文件可以改成: 图中为Makefile完整代码 6.4、自定义函数 有时候我们想去实现一些自己设计的函数。 语法:$(call<expression>;,...
在Makefile中,大家经常会见到类似、、@、^、$<这种类型的变量。这种变量一般称为自动变量,自动变量是局部变量,作用域范围在当前的规则内,它们分别代表不同的含义: $@:当前目标 $^:所有目标依赖 $<:目标依赖列表中的第一个依赖 $?:所有目标依赖中被修改过的文件 $%:当规则的目标是一个静态库文件时, $%代表...
伪目标还有两个用途,就是递归调用 makefile 和实现多文件编辑,这里不再详细介绍。下面列出 makefile 常用的一些伪目标以及他们的含义。 (2)GNU 编译、安装、打包相关的伪目标 下面列出的这些伪目标都是 GNU 的一些定义,我们在定义实现下面功能的伪目标时,应尽量使用下面列出的伪目标名称。在大型工程中,这些伪目标...
{MODS:%=%.beam} 是Makefile 变量替换的一种方式.其格式是 $(var:%.c=%.o)或${var:.c=.o},其意思是把.c 为结尾的变量替换成.o 则代表任意匹配之外的字符串.实例:source: main.c onvif.c object: $(var:%.c=%.o)这个时候 %分别等于 main 与 onvif 而 object 则等于 main.o 与...
这是GNU make中老版本的特性,在新版本中,我们使用函数"dir"或"notdir"就可以做到了。"D"的含义就是Directory,就是目录,"F"的含义就是File,就是文件。 下面是对于上面的七个变量分别加上"D"或是"F"的含义: $(@D) 表示"$@"的目录部分(不以斜杠作为结尾),如果"$@"值是"dir/foo.o",那么"$(@D)...
GNU make 有许多预定义的变量,这些变量具有特殊的含义,可在规则中使用。以下给出了一些主要的预定义变量,除这些变量外,GNU make 还将所有的环境变量作为自己的预定义变量。 $@——表示规则中的目标文件集。在模式规则中,如果有多个目标,那么," $@ " 就是匹配于目标中模式定义的集合。
他们三个是十分重要的三个变量,所代表的含义分别是: **$@:目标文件,$^: 所有的依赖文件,$<:第一个依赖文件**。 这个变量的问题,我们在下面继续讲解。 复杂一些的例子: sunq:kang.oyul.o gcckang.oyul.o-osunq kang.o:kang.ckang.h gcc-Wall-O-g-ckang.c-okang.o ...
* 通配符*和%在 Make 中都称为通配符,但它们的含义完全不同。*在您的文件系统中搜索匹配的文件名。 # Print out file information about every .c file print: $(wildcard *.c) ls -la $? *可以在目标、先决条件或wildcard函数中使用。 *不能在变量定义中直接使用 ...