Makefile中的wildcard/patsubst/notdir用法 makefile notdir

一般我们可以使用“$(wildcard*.c)”来获取工作目录下的所有的.c文件列表。复杂一些用法;可以使用“$(patsubst%.c,%.o,$(wildcard*.c))”,首先使用“wildcard”函数获取工作目录下的.c文件列表;之后将列表中所有文件名的后缀.c替换为.o。这样我们就可以得到在当前目录可生成的.o文件列表。因此在一个目录下可以使用如下内容的Makefile来将工作目录下的所有的.c文件进行[]编译并最后连接成为一个可执行文件:

#sample Makefile

objects := $(patsubst %.c,%.o,$(wildcard*.c))

foo : $(objects)

cc -o foo $(objects)

这里我们使用了make的隐含规则来编译.c的源文件。对变量的赋值也用到了一个特殊的符号(:=)。

1、wildcard : 扩展通配符
2、notdir : 去除路径
3、patsubst :替换通配符

例子:
建立一个测试目录,在测试目录下建立一个名为sub的子目录
$ mkdir test
$ cd test
$ mkdir sub

在test下,建立a.c和b.c2个文件,在sub目录下,建立sa.c和sb.c2 个文件

建立一个简单的Makefile
src=$(wildcard *.c ./sub/*.c)
dir=$(notdir $(src))
obj=$(patsubst %.c,%.o,$(dir) )

all:
@echo $(src)
@echo $(dir)
@echo $(obj)
@echo "end"

执行结果分析:
第一行输出:
a.c b.c ./sub/sa.c ./sub/sb.c

wildcard把 指定目录 ./ 和 ./sub/ 下的所有后缀是c的文件全部展开。

第二行输出:
a.c b.c sa.c sb.c
notdir把展开的文件去除掉路径信息

第三行输出:
a.o b.o sa.o sb.o

在$(patsubst %.c,%.o,$(dir))中,patsubst把$(dir)中的变量符合后缀是.c的全部替换成.o,
任何输出。
或者可以使用
obj=$(dir:%.c=%.o)
效果也是一样的。

这里用到makefile里的替换引用规则,即用您指定的变量替换另一个变量。
Makefile中的wildcard/patsubst/notdir用法 makefile notdir
它的标准格式是
$(var:a=b) 或 ${var:a=b}
它的含义是把变量var中的每一个值结尾用b替换掉a

  

爱华网本文地址 » http://www.aihuau.com/a/25101014/227753.html

更多阅读

怎样使用百度工具栏保存网页中的视频、音频? 保存网页音频

很多网友为了保存网页上的音视频伤透了,脑筋,安装了各种各样的软件,甚至用上了屏幕录像。其实完全不用这么麻烦,只需用一个小插件就能轻松下载。怎样使用百度工具栏保存网页中的视频、音频?——工具/原料IE浏览器 百度工具栏怎样使用百度

装饰画中的风水玄机 墙面装饰画风水

装饰画中的风水玄机张恕老师小威迷恋武侠、玄异作品,他的卧室墙壁上,几乎贴满了自己根据小说内容绘制的漫画、插图,将自己也融入了作品当中。慧慧喜欢小清新的风格,雨后的田野、落日时的草原、静静的荷塘,几乎就是她小家中装饰画的主

现货交易中的行业术语 现货持有过夜收费吗

现货交易中的行业术语,我们需要从基本的语言认识现货交易是怎么回事。  01、现货挂牌交易:是指在交易市场主持下,在交易市场规定的可交易范围内,交易商通过现货挂牌电子交易系统发出要约,在规定的交易时间内以“价格优先,时间优先”的

CF中的基本操作按键大全 穿越火线按键操作大全

CF中的基本操作按键大全——简介玩好CF不知道快捷键怎么行!!下面让我来为你介绍这些快捷键吧!让我们把CF玩high起来!CF中的基本操作按键大全——基本操作CF中的基本操作按键大全 1、基本操作:鼠标左右键+W、A、S、D 进行前、后、左、右

支付宝中的保证金如何解冻 淘宝保证金解冻

支付宝中的保证金如何解冻——简介 自己开网店的时候,一般都需要交保证金,这个保证金是冻结在自己的支付宝账号中的,也就说,钱在自己的支付宝账号里,只是暂时不能用。不开网店时,就需要把自己的保证金解冻,那么如何解冻呢?下面小编就分享一

声明:《Makefile中的wildcard/patsubst/notdir用法 makefile notdir》为网友跟不上节拍分享!如侵犯到您的合法权益请联系我们删除