zoukankan      html  css  js  c++  java
  • 举例分析 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

  • 相关阅读:
    [算法] 网络中最小费用最大流
    [题解] 完美数
    [算法] 扫描线及其应用
    等待时间
    键盘操作
    鼠标操作
    元素常用操作
    元素的定位·CSS
    元素的定位·XPATH
    元素的定位
  • 原文地址:https://www.cnblogs.com/GyForever1004/p/8797838.html
Copyright © 2011-2022 走看看