十、UNIX-LINUX---Makefile笔记二-使用函数(3-4)-文件名操作函数-foreach函数

三、文件名操作函数

  • 取目录函数- dir

  • $(dir <names…> )
  • 功能:从文件名序列<names>中取出目录部分。目录部分是指最后一个反斜杠“ / ” 之前的部分.如果没有反斜杠,那么返回 “ ./ ”
  • 返回:返回文件名序列<names>的目录部分
  • 例子
# 返回值是 “ src/ ./ ”
	$(dir src/foo.c hacks )
  • 取文件函数- notdir

  • $( notdir <names…> )
  • 功能:从文件名序列<names>中取出非目录部分,非目录部分是指最后一个反斜杠“ / ”之后的部分
  • 返回:返回文件名序列<names> 的非目录部分
  • 例子:
# 返回值 “ foo.c hacks ”
	$(notdir src/foo.c hacks)
  • 取后缀函数- suffix

  • $( suffix <names…> )
  • 功能:从文件名序列<names>中取出各个文件名的后缀
  • 返回:返回文件名序列<names>的后缀序列,如果文件没有后缀,则返回空字符串
  • 例子
# 返回值是“ .c .c ”
	$(suffix src/foo.c src-1.0/bar.c hacks)
  • 取前缀函数- basename

  • $( basename <names…> )
  • 功能:从文件名序列<names>的前缀序列,如果文件没有前缀,则返回空字符串
  • 例子
# 返回值是 “ src/foo src-1.0/bar hacks ”
	$(basename src/foo.c src-1.0/bar.c hacks)
  • 加后缀函数- addsuffix

  • $( addsuffix <suffix>,<names…> )
  • 功能:把后缀<suffix>加到<names>中的每个单词后面
  • 返回:返回加过后缀的文件名序列
  • 例子:
# 返回值是“ foo.c bar.c ”
	$( addsuffix .c,foo bar )
  • 加前缀函数- addprefix

  • $( addprefix <prefix>,<names…> )
  • 功能: 把前缀<prefix>加到<names>中的每个单词后面
  • 返回:返回加过前缀的文件名序列
  • 例子:
# 返回值是“ src/foo src/bar ”
	$( addprefix src/,foo bar )
  • 连接函数- join

  • $( join <list1>,<list2> )
  • 功能:把<list2>中的单词对应地加到<list1>的单词后面,
    如果<list1>的单词个数要比<list2>的多,那么,<list1>中多出来的单词要保持原样。
    如果<list2>的单词个数要比<list1>的多,那么,<list2>多出来的单词将被复制到<list2>中
  • 返回:返回连接过后的字符串
  • 例子:
# 返回值是  “ aaa111 bbb222 333 ”
	$( join aaa bbb, 111 222 333 )

四、foreach函数

  • forreach 函数

  • $( foreach <var>,<list>,<text> )
  • 功能:foreach 函数用来做循环用
  • 描述:把参数<list>中的单词逐一取出放到参数<var>所指定的变量中,
    然后再执行<text>所包含的表达式
    每一次<text>会返回一个字符串,循环过程中,<text>的所返回的每个字符串会以空格分隔,最后当整个循环结束时,<text>所返回的每个字符串所组成的整个字符串(以空格分隔)将会是 foreach 函数的返回值
 <var>最后是一个变量名
 #<var>是一个临时变量,作用域在foreach函数内
 <list>可以是一个表达式
 <text>中一般会使用<var>
  • 例子:
# 返回值为  “ a.o b.o c.o d.o ”
	names := a b c d
	files := $(foreach n,$(names),$(n).o)
	# 将names变量的值逐个放入 n变量中,
	# $(n).o 根据每次的n变量的值给其添加后缀.o
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值