Makefile技巧总结
来源:互联网 发布:学吹笛子软件 编辑:程序博客网 时间:2024/05/22 08:05
Makefile技巧总结
这里主要记录一些实用的Makefile编写技巧。
(1)wildcard、notdir与patsubst
wildcard : 扩展通配符
notdir : 去除路径
patsubst :替换通配符
例如:在test目录下建立a.c与b.c,在子目录sub下建立sa.c和sb.c
新建一个Makefile,内容如下:
运行结果如下:
第一行输出:a.c b.c ./sub/sa.c ./sub/sb.c
说明:wildcard将目录 ./ 和 ./sub/ 下的所有后缀是c的文件全部展开。
扩展:我们可以使用wildcard得到指定目录下所有的C语言源程序文件名,避免手工指定需要编译的.c文件。方法:SRC = $(wildcard *.c),相当于指定编译当前目录下所有.c文件,处理子目录中的文件:SRC = $(wildcard *.c) $(wildcard inc/*.c),同理也可以指定汇编源程序:ASRC = $(wildcard *.S),这样可以方便定制通用Makefile。
第二行输出: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中的每一个值的结尾a用b替换。
(2)$$变量S(变量)与$变量的区别
$A或者$(A)是Makefile的变量,$$表示Shell中的$,用来区分shell下引用变量。
比如:
第一个可以正常输出,第二个不可以,因为第二个表示Shell变量,而这里A给一个Makefile自身的变量。再如:
第三个可以正常输出,前两个不行,for循环使用的是Shell编程实现,变量i是Shell中的。
注:本文作者neonlight <neonlight@live.cn>,Blog http://blog.csdn.net/neonlight ,转载请注明出处!2010-04-07
- Makefile技巧总结
- makefile总结
- Makefile总结
- Makefile 总结
- makefile总结
- makefile 总结
- Makefile总结
- Makefile总结
- Makefile总结
- makefile 总结
- Makefile总结
- Makefile总结
- Makefile总结
- Makefile 总结
- Makefile总结
- Makefile 总结
- makefile总结
- makefile总结
- 加密web.config中的内容
- C语言中控制printf的打印颜色实例及vt100的控制符文档
- QTP关于winList 随机数学习笔记
- 预处理命令详解
- 卸载Oracle的实现方法
- Makefile技巧总结
- 在ASP.NET中使用Quartz.net进行工作调度
- [集锦]硬盘安装 Ubuntu XP/WIN7双系统安装流程
- 一个HR对所有维权者的忠告(转)
- 华为否认因“子承父业”挤走孙亚芳( 转载)
- 转 本人对于“用例”的一些理解和总结
- Android-Junit-TestCase-ClassLoader
- ASCII码对照表
- WCF学习笔记(第0篇)