Makefile之文件名操作函数

Makefile之文件名操作函数

  1. 取目录函数-dir

    $(dir <names...> )
    名称:取目录函数 dir
    功能:从文件名序列<names>中取出目录部分。目录部分是指最后一个反斜杠(“/”)之前的部分。如果没有反斜杠,那么返回“./”。
    返回:返回文件名序列<names>的目录部分。
    
    示例:
    @echo $(dir /home/a.c ./bb.c ../c.c d.c)
    ==> /home/ ./ ../ ./
    
  2. 取文件名称函数-notdir

    $(nodir <names>)
    名称:取文件函数 notdir,包括后缀,去除文件夹路径;
    功能:从文件名序列<names>中取出非目录部分。非目录部分是指最后一个反斜杠(“/”)之后的部分
    返回:返回文件名序列<names>的非目录部分
    
    示例: 
    @echo $(notdir /home/a.c ./bb.c ../c.c d.c)
    ==> a.c bb.c c.c d.c
    
  3. 取后缀函数-suffix

    $(suffix <names...> )
    名称:取后缀函数 suffix
    功能:从文件名序列<names>中取出各个文件名的后缀。
    返回:返回文件名序列<names>的后缀序列,如果文件没有后缀,则返回空字串。
    
    示例:
    @echo $(suffix /home/a.c ./b.o ../c.a d)
    ==> .c .o .a
    
  4. 取前缀函数-basename

    $(basename <names...> )
    名称:取前缀函数——basename。包括路径;
    功能:从文件名序列<names>中取出各个文件名的前缀部分。
    返回:返回文件名序列<names>的前缀序列,如果文件没有前缀,则返回空字串。
    
    示例:
    @echo $(basename /home/a.c ./b.o ../c.a /home/.d .e)
    ==> /home/a ./b ../c /home/
    
  5. 加后缀函数-addsuffix

    $(addsuffix <suffix>,<names...> )
    名称:加后缀函数 addsuffix
    功能:把后缀<suffix>加到<names>中的每个单词后面。
    返回:返回加过后缀的文件名序列。
    
    示例:
    @echo $(addsuffix .c,/home/a b ./c.o ../d.c)
    ==> /home/a.c b.c ./c.o.c ../d.c.c
    
  6. 加前缀函数-addprefix

    $(addprefix <prefix>,<names...> )
    名称:加前缀函数 addprefix。
    功能:把前缀<prefix>加到<names>中的每个单词后面。
    返回:返回加过前缀的文件名序列。
    
    示例:
    @echo $(addprefix test_,/home/a.c b.c ./d.c)
    ==> test_/home/a.c test_b.c test_./d.c
    
  7. 连接函数-join

    $(join <list1>,<list2> )
    名称:连接函数 join
    功能:把<list2>中的单词对应地加到<list1>的单词后面。如果<list1>的单词个数要比<list2>的多,那么,<list1>中的多出来的单词将保持原样。如果<list2>的单词个数要比<list1>多,那么,<list2>多出来的单词将被复制到<list2>中。对应位置的叠加,多余的原样输出;
    返回:返回连接过后的字符串。
    
    示例:
    @echo $(join a b c d,1 2 3 4)
    @echo $(join a b c d,1 2 3 4 5)
    @echo $(join a b c d e,1 2 3 4)
    
    a1 b2 c3 d4
    a1 b2 c3 d4 5
    a1 b2 c3 d4 e
    
坚持原创技术分享,您的支持将鼓励我继续创作!