手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Makefile 中的 patsubst、wildcard、notdir 函数实例分析

[日期:2018-04-13] 来源:cnblogs.com/GyForever1004  作者:GyForever1004 [字体: ]

函数简介:
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

本文永久更新链接地址https://www.linuxidc.com/Linux/2018-04/151865.htm

linux
相关资讯       makefile 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款