Makefile中patsubst、wildcard、notdir的使用
1 patsubst: 替换通配符
格式:
$(patsubst <pattern>,<replacement>,<text> )
名称:模式字符串替换函数——patsubst。
功能:查找text中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式pattern,如果匹配的话,则以替换。
这里,pattern可以包括通配符“%”,表示任意长度的字串。如果replacement中也包含“%”,那么,replacement中的这个“%”将是pattern中的那个“%”所代表的字串。
(可以用“\”来转义,以“%”来表示真实含义的“%”字符)
返回:函数返回被替换过后的字符串。
示例:
$(patsubst %.c,%.o, 1.c 2.c)
把字串“1.c,2.c”符合模式[%.c]的单词替换成[%.o],返回结果是“1.o 2.o”
2 wildcard: 扩展通配符
wildcard得到指定目录下所有的C语言源程序文件名
SRC = $(wildcard *.c)
编译当前目录下所有.c文件,如果还有子目录,比如子目录为inc,则:
SRC = $(wildcard *.c) $(wildcard inc/*.c)
3 notdir: 去除路径
notdir把展开的文件去除掉路径信息
4 综合应用
首先创建如下的目录结构
src = $(wildcard *.c ./sub/*.c)dir = $(notdir $(src))obj = $(patsubst %.c,%.o,$(dir) )all:@echo $(src)@echo $(dir)@echo $(obj)@echo "end"
wildcard把 指定目录 ./ 和 ./sub/ 下的所有后缀是c的文件全部展开。
notdir把展开的文件去除掉路径信息
patsubst把$(dir)中的变量符合后缀是.c的全部替换成.o
第三句相当于obj=$(dir:%.c=%.o)
5 扩展
Makefile有三个非常有用的变量。分别是@ , @,@,^,$<代表的意义分别是:
$@---------------------------目标文件
$^----------------------------所有的依赖文件
$<----------------------------第一个依赖文件下面给出傻瓜的makefile
main:main.o 1.o 2.ogcc -o main main.o 1.o 2.omain.o:main.c 1.h 2.hgcc -c main.c1.o:1.c 1.hgcc -c 1.c2.o:2.c 2.hgcc -c 2.c
简化后变成了
main:main.o 1.o 2.ogcc -o $@ $^main.o:main.c 1.h 2.hgcc -c $<1.o:1.c 1.hgcc -c $<2.o:2.c 2.hgcc -c $<
在此简化
main:main.o 1.o 2.ogcc -o $@ $^.c.o:gcc -c $<
表示所有的 .o文件都是依赖与相应的.c文件的
Makefile中patsubst、wildcard、notdir的使用相关推荐
- Makefile中的wildcard用法
Makefile中的wildcard用法 在Makefile规则中,通配符会被自动展开.但在变量的定义和函数引用时,通配符将失效.这种情况下如果需要通配符有效,就需要使用函数"wildcar ...
- Makefile中patsubst函数使用方法
Makefile中patsubst函数使用方法 patsubst函数用于将文件模式进行替换. 一.作用 替换文件后缀. 二.格式 $(patsubst 原模式, 目标模式, 文件列表) 三.实例 ...
- Makefile中的wildcard patsubst
在Makefile规则中,通配符会被自动展开.但在变量的定义和函数引用时,通配符将失效.这种情况下如果需要通配符有效,就需要使用函数"wildcard",它的用法是:$(wildc ...
- makefile中的wildcard 、patsubst、
在Makefile规则中,通配符会被自动展开.但在变量的定义和函数引用时,通配符将失效. 这种情况下如果需要通配符有效,就需要使用函数"wildcard",它的用法是:$(wild ...
- MAKEFILE【4】-Makefile中的wildcard用法
文章目录 前言 前言 语法: $(wildcard PATTERN...) 在Makefile中,它被展开为已经存在的.使用空格分开的.匹配此模式的所有文件列表 一般我们可以使用"$(wil ...
- makefile中的patsubst, wildcard, notdir
From:http://blog.sina.com.cn/s/blog_60cbc1700100nuhz.html 1.wildcard : 扩展通配符 2.notdir : 去除路径 3.patsu ...
- Makefile中patsubst(扩展通配符)的含义
patsubst 是 Makefile 里的一个函数 语法 #查找text中的单词,如果匹配pattern,那么就用replacement的内容替换 #返回:函数返回被替换过后的字符串. #$(pat ...
- makefile中的wildcard
wildcard : 扩展通配符 例子: 建立一个测试目录,在测试目录下建立一个名为sub的子目录 $ mkdir test $ cd test $ mkdir sub 在test下,建立a.c和b. ...
- makefile中的foreach、patsubst等函数及自动化变量
参考链接: Makefile中foreach函数使用方法 Makefile中的$@, $^, $< , $?, $%, $+, $* Makefile之patsubst wildcard ,no ...
最新文章
- basler相机参数简要中文说明_附下载| OpenCV最新中文版官方教程
- 生信人的linux考试
- 《2021年全球创新指数报告》发布!
- boost::multi_index模块相关的测试程序
- 河流水质指标预测与不确定性分析:机器学习模型的比较研究--文献阅读
- 橱窗布置(信息学奥赛一本通-T1279)
- 马斯克:全力支持狗狗币主要持有者出售货币 持仓太集中是问题
- DDS原理以及MATLAB实现
- 银行合规程序KYC、CDD、AML和TM
- Laravel5.2之Seeder填充数据小技巧
- linux系统文件夹(转)
- 车牌号归属地查询,免费API
- 小程序发布线上接口请求失败,开发者工具请求正常,体验版和开发版要打开调试才可以正常请求解决办法
- RPG Maker MV 打包安卓和修改分辨率的方法
- APP:校园网登录app—中小南—源码简析
- html制作简易计算机,用JavaScript制作一个简易计算器
- mysql 设置为空_MySQL中可为空的字段设置为NULL还是NOT NULL
- vs code远程编辑文件
- ICCV2021-Soft Teacher-End-to-End Semi-Supervised Object Detection with Soft Teacher
- 点云笔记01---点云基本概念