makefile之通配符扩展
2016-01-10 13:36
393 查看
makefile中使用通配符的注意点
关于makefile中的通配符话题其实很简单,在使用时心中知道以下几点就OK。
(1)makefile中的通配符与通常的shell通配符是一样的。
(2)通配符扩展发生的时机。通配符扩展发生在如下时刻:
① 在规则的目标、依赖中的通配符,make在读取Makefile时会自动为其进行匹配处理(即展开)
② 在命令中的通配符不需要make来操心,它们最总由shell来展开。
③ 除上面两点之外的地方(如变量定义),不能直接使用通配符,只能通过函数wildcard来达到目的
以下,通过一个简单的例子来感受下:
目录结构如下:
Makefile内容如下:
运行结果如下:
# make
cc.c
bb.c
aa.c
cc.o bb.o aa.o
cc.c bb.c aa.c
%.c
aa.c bb.c cc.c
aa.c bb.c cc.c
可以看到尽管在变量定义中使用了通配符,但是在规则中依然正确扩展了。不过其中的src2中的%,shell是不认识的。
关于makefile中的通配符话题其实很简单,在使用时心中知道以下几点就OK。
(1)makefile中的通配符与通常的shell通配符是一样的。
通配符 | 匹配 |
? | 任何的单一字符 |
* | 任何的字符字符串 |
[set] | 任何在set里的字符 |
[!set] | 任何不在set里的字符 |
① 在规则的目标、依赖中的通配符,make在读取Makefile时会自动为其进行匹配处理(即展开)
② 在命令中的通配符不需要make来操心,它们最总由shell来展开。
③ 除上面两点之外的地方(如变量定义),不能直接使用通配符,只能通过函数wildcard来达到目的
以下,通过一个简单的例子来感受下:
目录结构如下:
Makefile内容如下:
运行结果如下:
# make
cc.c
bb.c
aa.c
cc.o bb.o aa.o
cc.c bb.c aa.c
%.c
aa.c bb.c cc.c
aa.c bb.c cc.c
可以看到尽管在变量定义中使用了通配符,但是在规则中依然正确扩展了。不过其中的src2中的%,shell是不认识的。
相关文章推荐
- 华为机试——放苹果
- iOS开发之让你的应用“动”起来
- 消息提醒
- 【mysql】count(*),count(1)与count(column)区别
- 回顾Quick Sort(Javascript 实现)
- 学习笔记:FIS3
- Android之DialogFragment
- 燕十八视频--CSS
- 小紫书 3-11 UVA 1588 POJ 3158 Kickdown
- Angularjs 数据循环
- js实现table排序
- commons-pool分析
- C++小题(十四)
- Unity多玩家游戏和网络功能
- 华为机试——整数划分
- LeetCode Word Ladder
- 【中级篇】Linux下搭建MySQL数据库系统
- 使用shell连接engine
- Ubuntu设置语言为英语
- ubuntu用户切换