1.1 patsubst:模式替换函数

格式:格式:$(patsubst pattern, replacement, text)
功能:查找text中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式pattern,如果匹配的话,则以replacement替换。这里,pattern可以包括通配符“%”,表示任意长度的字串。如果replacement中也包含“%”,那么,replacement中的这个“%”将是pattern中的那个“%”所代表的字串。(可以用“\”来转义,以“%”来表示真实含义的“%”字符)

1.2 在工作中的常见用法

在打包环境中,有些客户的程序是定制的,某些配置文件或者函数库是特殊的,在打包时可以通过条件编译去选择,打包不同路径下配置文件或者函数库。替换特殊库有两种思路:一种是在还没有添加该库时就用特殊库把常用路径下的库给覆盖掉;还有一种是已经添加了常用路径下库再去替换。前者可以用cp命令,后者用patsubst函数。关于如何同一环境如何打包出不同的程序,可以参考《Makefile中的条件编译:ifeq、ifneq、ifdef和ifndef》。

1.3 实例:

LIBS := $(patsubst Libs/libAormal.a, Specialities/libAormal.a, $(LIBS))

假设在打包环境中有“Libs/libAormal.a”库,通常情况下都是链接该路径下的libAormal.a,但是有客户提出了定制需求,于是添加了“Specialities/libAormal.a”,该路径下的libAormal.a是针对该客户定制,在打包该客户的程序时必须链接“Specialities/libAormal.a”,于是就存在了libAormal.a的替换问题。上面的代码,作用是在LIBS变量中查找是否存在“Libs/libAormal.a”字符串,如果存在就用“Specialities/libAormal.a”替代,这样就实现了链接“Specialities/libAormal.a”而不是链接“Libs/libAormal.a”。LIBS这个变量是专门用来记录打包程序需要用到的静态库的。
注意事项:一定要保证在“Libs/libAormal.a”已经添加到了LIBS变量后再去调用patsubst 函数进行替换,否则调用patsubst 函数时,LIBS变量里都没有“Libs/libAormal.a”,还谈何替换。

2.1 wildcard:扩展通配符

作用:将指定目录下的文件全部展开,包括文件路径和文件名

3.1 notdir:去除路径

作用:将文件的路径去除,只留下文件名。

wildcard和notdir实例:

//创建一个文件夹和文件
mkdir test
touch a.c b.c
mkdir subdirectory//创建子文件夹
cd subdirectory
touch d.c e.c//在test/目录下创建Makefile
src=$(wildcard *.c ./subdirectory/*.c)
dir=$(notdir $(src))
all:
@echo $(src)
@echo $(dir)//输出结果
第一行:a.c b.c ./subdirectory/d.c ./subdirectory/e.c
第二行:a.c b.c d.c e.c

makefile中的patsubst、notdir、wildcard介绍以及用法相关推荐

  1. Makefile中的常用函数——wildcard,patsubst,filter

    Makefile中的常用函数 wildcard 提取文件用 #拿到DIR指定目录的所有文件 SRC = $(wildcard $(DIR)) #拿到当前文件夹下的 *.cpp 文件 src=$(wil ...

  2. makefile中的patsubst, wildcard, notdir

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

  3. makefile中的patsubst

    1.wildcard : 扩展通配符 2.notdir : 去除路径 3.patsubst :替换通配符 例子: 建立一个测试目录,在测试目录下建立一个名为sub的子目录 $ mkdir test $ ...

  4. 【makefile笔记】patsubst和wildcard函数使用小结

    0x00 前言 文章中的文字可能存在语法错误以及标点错误,请谅解: 如果在文章中发现代码错误或其它问题请告知,感谢! 0x01 makefile函数调用语法 makefile函数调用原型: $(< ...

  5. Makefile中的patsubst函数

    $(patsubst 原模式, 目标模式, 文件列表) 如: 在$(patsubst %.c,%.o,$(dir) )中,patsubst把$(dir)中的变量符合后缀是.c的全部替换成.o $(pa ...

  6. HTML中的link的简单介绍和用法

    <!DOCTYPE html> <html> <head>     <meta charset="utf-8">     <l ...

  7. makefile中wildcard notdir patsubst的简单介绍

    1.wildcard : 扩展通配符 2.notdir : 去除路径 3.patsubst :替换通配符 例子: 建立一个测试目录,在测试目录下建立一个名为sub的子目录 $ mkdir test $ ...

  8. Makefile中的常用函数subst、foreach、wildcard、notdir、patsubst

    Makefile中函数参数间以逗号分隔,函数名和参数间以空格分隔,$ 是取值符号,$val相当于获取val变量的值. subst函数的调用语法 subst FROM, TO, TEXT 即将字符串TE ...

  9. makefile 中 wildcard、notdir、patsubst、addprefix 解释

    原文链接:https://blog.csdn.net/huofire001/article/details/83684446 目录 wildcard 获取跟当前模式匹配的文件名 查找一层目录 查找多层 ...

最新文章

  1. SpringBoot2.0 以上 WebMvcConfigurerAdapter 方法过时 解决办法
  2. 逐一应对 检修三类型视频会议常见问题
  3. Java 创建、填充PDF表单域
  4. mac os 开启redis_关于Redis,学会这8点就够了
  5. matlab实现浮点转定点,浮点转定点方法总结.doc
  6. python二进制移位_python学习特辑——二进制和位运算篇
  7. keras手写数字识别--入门
  8. centos安装mysql5.6系统崩溃_CentOS中安装MySQL5.6报错的解决方法
  9. CCF CSSP202009-1称检测点查询
  10. 常用排序算法(六)——希尔排序
  11. C# 5.0 CallerMemberName CallerFilePath CallerLineNumber获取调用方法名称,路径,行号
  12. RabbitMQ SSL安全认证
  13. Axure RP9教程 入门讲解
  14. 没有事业的女孩子很悲惨 - - - 一位老总的话!
  15. 身为一个程序员该怎么去判断一个工作的好坏?
  16. STN_空间变换网络
  17. 工作中少说这“五句话”(必读)
  18. UBUNTU开启CRONTAB日志记录及解决NO MTA INSTALLED, DISCARDING OUTPUT问题
  19. iPhone7可以共享热点给多少设备使用呢?
  20. 图像去燥:NLM、BM3D

热门文章

  1. ECshop 页面修改及出错处理方法基础知识(第一部分)
  2. 【幻灯片动画制作软件】Focusky教程 | 如何隐藏物体?
  3. Unity3D学习笔记(二、小球滚动吃金币)
  4. php 如何实现 图表 联动,echarts实现地图定时切换散点与多图表级联联动详解
  5. python界面开发案例:制作一个计算器软件
  6. 前端打包工具-webpack和rollup的区别
  7. 系统服务器查看snmp,windows7系统打开snmp服务的方法(图文)
  8. JDK安装和配置教程
  9. 一伪淘宝html网页
  10. 移动开发之iOS 算法基础6-7节