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


    函数简介:

    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

  • 相关阅读:
    pandas笔记
    MongoDB分片集群技术
    MongoDB基本操作
    linux MongoDB安装配置
    MongoDB入门
    introJs用法及在webkit内核浏览器的一个报错
    日常ie兼容问题(持续整理)
    浅谈connect,withRouter,history,useState,useEffect
    node环境配置
    小程序之签到
  • 原文地址:https://www.cnblogs.com/GyForever1004/p/8797838.html
Copyright © 2020-2023  润新知