Makefile之wildcard

转载 2012年03月22日 14:30:24

http://hi.baidu.com/%D5%D4%B7%F6%B7%E7/blog/item/e44b5d1334c35e1e5aaf5334.html


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里的替换引用规则,即用您指定的变量替换另一个变量。
它的标准格式是
$(var:a=b) 或 ${var:a=b}
它的含义是把变量var中的每一个值结尾用b替换掉a

今天在研究makefile时在网上看到一篇文章,介绍了使用函数wildcard得到指定目录下所有的C语言源程序文件名的方法,这下好了,不用手工一个一个指定需要编译的.c文件了,方法如下:

SRC = $(wildcard *.c)

等于指定编译当前目录下所有.c文件,如果还有子目录,比如子目录为inc,则再增加一个wildcard函数,象这样:

SRC = $(wildcard *.c) $(wildcard inc/*.c)

也可以指定汇编源程序:
ASRC = $(wildcard *.S)

这样一来,makefile模板可修改的基本就是AVR名称和时钟频率了,其它的一般不用动了。

makefile 文件中得wildcard

http://blog.csdn.net/maojudong/article/details/2245966 1、wildcard : 扩展通配符 2、notdir : 去除路径 3、patsu...

makefile学习3-wildcard和patsubst

notdir,wildcard和patsubst是makefile中几个有用的函数,以前没留意过makefile中函数的用法,今天稍微看看~ 1、makefile里的函数 makefile里的...

Makefile中的wildcard和patsubst的用法

在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTE...

makefile 常用函数notdir、wildcard、patsubst

notdir,wildcard和patsubst是makefile中几个有用的函数,以前没留意过makefile中函数的用法,今天稍微看看~   1、makefile里的函数 mak...
  • clirus
  • clirus
  • 2015年07月21日 19:42
  • 327

makefile中的patsubst, wildcard, notdir

From:http://blog.sina.com.cn/s/blog_60cbc1700100nuhz.html 1、wildcard : 扩展通配符 2、notdir : 去除路径 ...

Makefile之wildcard

http://blog.csdn.net/Matrix_Designer/article/details/5896013 1、wildcard : 扩展通配符 2、notdir : 去除路径 3...

GNU Makefile 笔记 foreach wildcard patsubst

1、foreach 函数  这个函数是用来做循环用的,Makefile中 的foreach函数几乎是仿照于Unix标准Shell (/bin/sh)中的for语句, 或是C- Shell (/bi...

Makefile编译目录下多个文件以及函数wildcard用法

原文出处:http://blog.csdn.net/hunanchenxingyu/article/details/12205305 ================================...

makefile中的wildcard用法

在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATT...
  • xungjhj
  • xungjhj
  • 2017年06月23日 09:31
  • 144

Makefile中wildcard的用法

在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATT...
  • dyzok88
  • dyzok88
  • 2015年02月06日 13:37
  • 377
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Makefile之wildcard
举报原因:
原因补充:

(最多只允许输入30个字)