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的使用相关推荐

  1. Makefile中的wildcard用法

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

  2. Makefile中patsubst函数使用方法

    Makefile中patsubst函数使用方法   patsubst函数用于将文件模式进行替换. 一.作用 替换文件后缀. 二.格式 $(patsubst 原模式, 目标模式, 文件列表) 三.实例 ...

  3. Makefile中的wildcard patsubst

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

  4. makefile中的wildcard 、patsubst、

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

  5. MAKEFILE【4】-Makefile中的wildcard用法

    文章目录 前言 前言 语法: $(wildcard PATTERN...) 在Makefile中,它被展开为已经存在的.使用空格分开的.匹配此模式的所有文件列表 一般我们可以使用"$(wil ...

  6. makefile中的patsubst, wildcard, notdir

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

  7. Makefile中patsubst(扩展通配符)的含义

    patsubst 是 Makefile 里的一个函数 语法 #查找text中的单词,如果匹配pattern,那么就用replacement的内容替换 #返回:函数返回被替换过后的字符串. #$(pat ...

  8. makefile中的wildcard

    wildcard : 扩展通配符 例子: 建立一个测试目录,在测试目录下建立一个名为sub的子目录 $ mkdir test $ cd test $ mkdir sub 在test下,建立a.c和b. ...

  9. makefile中的foreach、patsubst等函数及自动化变量

    参考链接: Makefile中foreach函数使用方法 Makefile中的$@, $^, $< , $?, $%, $+, $* Makefile之patsubst wildcard ,no ...

最新文章

  1. basler相机参数简要中文说明_附下载| OpenCV最新中文版官方教程
  2. 生信人的linux考试
  3. 《2021年全球创新指数报告》发布!
  4. boost::multi_index模块相关的测试程序
  5. 河流水质指标预测与不确定性分析:机器学习模型的比较研究--文献阅读
  6. 橱窗布置(信息学奥赛一本通-T1279)
  7. 马斯克:全力支持狗狗币主要持有者出售货币 持仓太集中是问题
  8. DDS原理以及MATLAB实现
  9. 银行合规程序KYC、CDD、AML和TM
  10. Laravel5.2之Seeder填充数据小技巧
  11. linux系统文件夹(转)
  12. 车牌号归属地查询,免费API
  13. 小程序发布线上接口请求失败,开发者工具请求正常,体验版和开发版要打开调试才可以正常请求解决办法
  14. RPG Maker MV 打包安卓和修改分辨率的方法
  15. APP:校园网登录app—中小南—源码简析
  16. html制作简易计算机,用JavaScript制作一个简易计算器
  17. mysql 设置为空_MySQL中可为空的字段设置为NULL还是NOT NULL
  18. vs code远程编辑文件
  19. ICCV2021-Soft Teacher-End-to-End Semi-Supervised Object Detection with Soft Teacher
  20. 点云笔记01---点云基本概念

热门文章

  1. 关于词法分析和语法分析
  2. 如何将一个PDF文件页面进行的拆分为多个PDF文件
  3. python通过键盘方向键移动_移动python教程!python中怎么用键盘方向键控制方块的移动...
  4. 张逸:老鸟对菜鸟的一些建议
  5. 批量修改文件名后缀的两个方法
  6. HoloToolKit 02-空间音效
  7. [转载]果真有第五神力?
  8. 【玩转云函数】腾讯云云函数结合金山文档打造轻量级 Office 在线预览服务
  9. switch中的break和return的区别
  10. coderforces 22C 构图水题