您的位置 首页 方案

你了解Makefile的内嵌函数?

你了解Makefile的内嵌函数?-把中的单词逐一取出放到参数所制定的变量中,然后再执行所包含的表达式,循环过程中,所返回的每个字符串会以空格分隔,最后当整个循环结束时,所返回的每个字符串所组成的整个字符串(以空格分隔)将会是foreach函数的返回值

  subst字符串替换函数

  $(subst , , ),把中的字符串替换成,回来被替换过的字符串

  SRC:=/mnt/hgfs/share/123DES:=$(subst /mnt,/root,$(SRC)) #ATTENTION:是,/root不是, /rootall: @echo $(SRC) @echo $(DES)/mnt/hgfs/share/123/root/hgfs/share/123

  patsubst形式字符串替换函数

  $(patsubst , , )

  ,查找中的单词(单词以 空格,Tab,回车 分隔)是否契合形式,契合的话,则以替换,这儿,能够包括通配符 % 表明恣意长度的字符串,假如中也包括 %, 则 中的这个 % 将是 中的那个 % 所代表的字符串

  SRC:=/mnt/hgfs/share/123DES:=$(patsubst %/123,%/456,$(SRC))all: @echo $(SRC) #Note:shell可不支撑@ @echo $(DES)/mnt/hgfs/share/123/mnt/hgfs/share/456

  strip

  $(strip a b c)把字符串去掉最初和结束的空格,结果是 “a b c”

  DES:=$(strip 12,43 ) #参数字符串是从1开端的,能去掉最终一个空格DES:=$(strip “ 12,43 ”) #参数字符串是从空格开端的,能去掉最终一个空格all: @echo $(DES)/mnt/hgfs/share/123 12,43

  findstring查找字符串函数

  $(findstring , ),在字符串中查找,假如找到,就回来,不然回来空

  SRC:=/mnt/hgfs/share/123DES:=$(findstring /mnt,$(SRC))all: @echo $(SRC) @echo $(DES)/mnt/hgfs/share/123/mnt

  filter过滤函数

  $(filter , ),以形式过滤字符串的单词,保存形式的单词,能够有多个

  SRC:= 123.c 789.c 456.s eee.j#DES:=$(filter %.c,%.s,$(SRC)) #WRONG!!!DES:=$(filter %.c %.s,$(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j123.c 789.c 456.s

  filter-out反过滤函数

  $(filter-out ,)

  ,以形式过滤字符串的单词,去除形式的单词,能够有多个

  SRC:= 123.c 789.c 456.s eee.jDES:=$(filter-out %.c,$(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j456.s eee.j

  sort排序函数

  $(sort ),给字符串中的单词(不是字符)按升序排序

  SRC:= 123.c 789.c 456.s eee.jDES:=$(sort $(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j123.c 456.s 789.c eee.j

  word

  $(word ,)取单词函数,取字符串中的第个单词,回来字符串中的第n个单词,假如n比中的单词要大,那么回来空字符串

  SRC:= 123.c 789.c 456.s eee.jDES:=$(word 2,$(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j789.c

  wordlist取单词串函数

  $(wordlist , , )

  ,从字符串中取从开端到的单词串,和是一个数字,回来取出的单词串,假如s大于,那么回来空,假如e大于,则回来从s开端到结束的字符串

  SRC:= 123.c 789.c 456.s eee.jDES:=$(wordlist 2,4,$(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j789.c 456.s eee.j

  words单词个数计算函数

  $(words ),回来单词数

  SRC:= 123.c 789.c 456.s eee.jDES:=$(words $(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j4

  firstword首单词函数

  $(firstword ),回来的第一个单词

  SRC:= 123.c 789.c 456.s eee.jDES:=$(firstword $(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j123.c

  dir取目录函数

  $(dir ),从每个name中取出目录部分,回来文件地点目录,假如没有/,则回来。/

  SRC:=/mnt/hgfs/share/123DES:=$(dir $(SRC))all: @echo $(SRC) @echo $(DES)/mnt/hgfs/share/123/mnt/hgfs/share/

  notdir取文件函数

  $(notdir ),从每个name中取出文件部分,回来文件名,假如没有文件,回来空。这儿的name有必要是变量名,不能是变量的内容,不然什么都不会回来

  SRC:=/mnt/hgfs/share/123DES:=$(notdir $(SRC))all: @echo $(SRC) @echo $(DES)/mnt/hgfs/share/123123

  suffix取后缀函数

  $(suffix ),从文件名序列中取出各个文件的后缀,回来后缀,假如没有后缀,回来空

  SRC:= 123.c 789.c 456.s eee.jDES:=$(suffix $(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j.c .c .s .j

  basename取前缀函数

  $(basename ),从文件名序列中取出各个文件的前缀,回来前缀,假如没有前缀,回来空

  SRC:= 123.c 789.c 456.s eee.jDES:=$(basename $(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j123 789 456 eee

  addsuffix

  $(addsuffix , )加后缀函数

  ,将后缀加到中每个单词的后边,回来加过后缀的文件名序列

  SRC:= 123.c 789.c 456.s eee.jDES:=$(addsuffix _suf,$(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j123.c_suf 789.c_suf 456.s_suf eee.j_suf

  addprefix

  $(addprefix , )加前缀函数

  ,将前缀加到中每个单词的后边,回来加过前缀的文件名序列

  SRC:= 123.c 789.c 456.s eee.jDES:=$(addprefix prf_,$(SRC))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.jprf_123.c prf_789.c prf_456.s prf_eee.j

  join

  $(join , )衔接函数

  ,把中的单词对应的加到的单词的后边,假如中的单词更多,则多出来的单词坚持原样,假如的单词个数更多,那么多出来的被复制到中

  SRC:= 123.c 789.c 456.s eee.jSRCJOIN:= q e r t y uDES:=$(join $(SRC),$(SRCJOIN))all: @echo $(SRC) @echo $(DES)123.c 789.c 456.s eee.j123.cq 789.ce 456.sr eee.jt y u

  foreach

  $(foreach , , )

  把中的单词逐个取出放到参数所拟定的变量中,然后再履行所包括的表达式,循环过程中,所回来的每个字符串会以空格分隔,最终当整个循环结束时,所回来的每个字符串所组成的整个字符串(以空格分隔)将会是foreach函数的回来值

  if

  $(if , )

  $(if , ,)

  回来非0即为真

  call创立函数的函数

  $(call , , , …)

  origin确认变量的身世

  $(origin )

  ,回来值有 “undefined”, “default”, “environment”, “file”, “command line”, “override” , “automaTIc”

  shell

  $(shell )或$()

  参数是一个shell指令

  error

  $(error )

  过错生成函数,是过错信息

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/99897.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部