函数简介:

1、wildcard : 扩展通配符
2、notdir :去除路径
3、patsubst :替换通配符

实例:

建立一个 test 目录,在测试目录下建立一个名为 sub 的子目录

$ mkdir test
$ cd test
$ mkdir sub

在 test 下,建立 a.c 和 b.c 两个文件,在 sub 目录下,建立 sa.c 和 sb.c 两个文件

写出一个简单的 Makefile

src = $(wildcard *.c ./sub/*.c)
dir = $(notdir $(src))
obj = $(patsubst %.c,%.o,$(dir) ) all:
@echo $(src)
@echo $(dir)
@echo $(obj)
@echo "end"

执行结果分析:

第一行输出:
a.c b.c ./sub/sa.c ./sub/sb.c wildcard 把指定目录 ./ 和 ./sub/ 下的所有后缀是 c 的文件全部展开。 第二行输出:
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 中的每一个值结尾用 b 替换掉 a

参考自:blog.csdn.net/srw11/article/details/7516712

举例分析 Makefile 中的 patsubst、wildcard、notdir 函数的更多相关文章

  1. 举例分析 Makefile 中的 filter 与 filter-out 函数

    $(filter pattern-,text) Returns all whitespace-separated words in text that do match any of the patt ...

  2. makefile中的patsubst

    函数名称:加前缀函数—addprefix. 函数功能:为“NAMES…”中的每个文件名称加入前缀“PREFIX”.參数“NAMES…”是空格切割的文件名称序列,将“SUFFIX”加入到此序列的每个文件 ...

  3. makefile 中的patsubst

    1. wildcard:扩展通配符 2. notdir:去除路径 3. patsubst:替换通配符 若有一个makefile如下: src=$(wildcard *.c ./sub/*.c) dir ...

  4. makefile中的patsubst函数有何作用?

    答:这是个模式替换函数,格式为: $(patsubst <pattern>,<replacement>,<text>) 查找text中的单词,如果匹配pattern ...

  5. 通用 Makefile(及makefile中的notdir,wildcard和patsubst)

    notdir,wildcard和patsubst是makefile中几个有用的函数,以前没留意过makefile中函数的用法,今天稍微看看~ 1.makefile里的函数 makefile里的函数使用 ...

  6. Makefile中的函数

    Makefile 中的函数 Makefile 中自带了一些函数, 利用这些函数可以简化 Makefile 的编写. 函数调用语法如下: $(<function> <arguments ...

  7. makefile中的wildcard和notdir和patsubst

    转自:https://blog.csdn.net/srw11/article/details/7516712 1.wildcard : 扩展通配符 2.notdir : 去除路径 3.patsubst ...

  8. [转]Makefile中的wildcard/notdir/patsubst

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

  9. Makefile中的wildcard/notdir/patsubst

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

随机推荐

  1. Filter的使用(web作业)

    一:什么是过滤器 Filter:Servlet过滤器Fileter是一个小型的web组件,它们通过拦截请求和响应,以便查看.提取或以某种方式操作客户端和服务器之间交换的数据,实现“过滤”的功能.Fil ...

  2. 计算机网络三:域名、IP地址和TCP/IP协议

    一.域名        域名(Domain Name),简称域名.网域,是由一串用点分隔的字符型标志名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时 ...

  3. robotframework-databaselibrary安装步骤

    我这里主要介绍离线安装的方式 第一步:下载robotframework-databaselibrary-0.6 包可以去网上找安装包下载,如果实在找不到可以联系我 第二步:下载PyMySQL-0.9. ...

  4. lua 使用中遇到的坑总结

    前言 竹子是 java 程序员一枚,最近在做一个登录的改造,用 lua 实现,现在基本算是告一段落,然后在此分享下在过程中遇到的坑吧. 一定要注意使用 lua 的版本,版本不同,可能有的函数就没有了, ...

  5. 9-Unittest+HTMLTestRunner不能生成报告解决方法

    1.问题现象 在使用HTMLTestRunner生成测试报告时,出现程序运行不报错,但不能生成报告的情况. 刚开始找了很久没发现问题,后来加上打印信息,发现根本没执行生成报告这部分代码.最后网上找到原 ...

  6. Android基础知识学习

    IPC  (Inter-Process Communication) 意思是: 进程间的通信,是指两个进程之间进行数据交换的过程. Android中如何开启多进程呢? 只需要给四大组件(Activit ...

  7. HG

    ==========秦魏魏曹WLLMONKTVKTPKMMPWUUUQL}][孔吕吕孔戚%韩施卫韩华?韩魏L!张沈韩谢==========

  8. Product and Sum in Category Theory

    Even if you are not a functional programmer, the notion of product type should be familiar to you, e ...

  9. JVM之垃圾收集器与内存分配回收策略(二)

    上一篇JVM垃圾收集器与内存分配策略(一),下面是jdk1.7版本的垃圾收集器之间的关系,其中连线两端的两种垃圾收集器可以进行搭配使用,下面来总结一下这些收集器的一些特点以及关系. 一.Serial收 ...

  10. Java面试中的“劲敌”线程,9个疑问全面解析

    作者:我是攻城师 (一)创建线程的方式 (1)实现Runnable接口 (2)继承Thread类 推荐使用接口,能够做到定义与实现分离,耦合更低 (二)关于线程的优先级 thread2.setPrio ...