Chinaunix首页 | 论坛 | 博客
  • 博客访问: 39131
  • 博文数量: 7
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-23 22:23
文章分类

全部博文(7)

文章存档

2013年(7)

我的朋友

分类: 嵌入式

2013-02-25 20:19:16

 Makefile三个常用函数,在Makefile规则中,通配符会被自动展开。但在变量的定义和定义函数引用时,通配符将失效

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,


 

 

阅读(978) | 评论(0) | 转发(1) |
1

上一篇:没有了

下一篇:linux线程函数及僵尸线程的产生

给主人留下些什么吧!~~