strip函数:$(strip text)

函数功能:去除字符串空格函数

示例:

STR =        a    b c      
LOSTR = $(strip $(STR)) 
#结果是“a b c”。

-------------------------------------------------------------------------------------------------------------------------------------------

eval函数: $(eval text)
函数功能: 它的意思是 text 的内容将作为makefile的一部分而被make解析和执行。

示例:

比如这样一个makefile:
$(eval xd:xd.c a.c)
将会产生一个这样的编译
cc xd.c a.c -o xd 这样一个makefile:
define MA
aa:aa.c
gcc -g -o aa aa.c
endef
$(eval $(call MA) )
会产生一个这样的编译:
gcc -g -o aa aa.c

-------------------------------------------------------------------------------------------------------------------------------------------

filter函数: $(filter PATTERN…,TEXT)

函数功能:过滤掉字串“TEXT”中所有不符合模式“PATTERN”的单词

示例: 

sources := foo.c bar.c baz.s ugh.h
foo: $(sources)
cc $(filter %.c %.s,$(sources)) -o foo
函数返回
值为“foo.c bar.c baz.s

-------------------------------------------------------------------------------------------------------------------------------------------

if函数: $(if <condition>,<then-part>,<else-part> )
函数功能:类似c语言的三目运算a>b?true:false;此函数如果condition非空返回then-part,condition为空返回else-part

示例:

SRC_DIR := src

#if函数---设置默认值
#如果变量SRC_DIR的值不为空,则将SRC_DIR指定的目录作为SUBDIR子目录;否则将/home/src作为子目录
SUBDIR += $(if $(SRC_DIR) $(SRC_DIR),/home/src) all:
@echo $(SUBDIR)

-------------------------------------------------------------------------------------------------------------------------------------------

patsubst函数:$(patsubst <pattern>,<replacement>,<text>)

函数功能:查找text中的单词,如果匹配pattern,那么就用replacement的内容替换

示例:

$(patsubst %.c,%.o,jello1.c jello2.c)

#那么将会替换成jello1.o jello2.o

-------------------------------------------------------------------------------------------------------------------------------------------

filter-out函数:$(filter-out PATTERN…,TEXT)

函数功能:反过滤函数—filter-out,过滤满足PATTERN的字符串

示例:

objects=main1.o foo.o main2.o bar.o
mains=main1.o main2.o $(filter-out $(mains),$(objects))
#结果:它的返回值为“foo.o bar.o”

-------------------------------------------------------------------------------------------------------------------------------------------

call函数: $(call <expression>;,<parm1>;,<parm2>;,<parm3>;...)

函数功能:call函数是唯一一个可以用来创建新的参数化的函数。你可以写一个非常复杂的表达式,这个表达式中,你可以定义许多参数,然后你可以用call函数来向这个表达式传递参数。

示例:

reverse =  $(1) $(2)

foo = $(call reverse,a,b)

那么,foo的值就是“a b”。当然,参数的次序是可以自定义的,不一定是顺序的,如:

reverse =  $(2) $(1)

-------------------------------------------------------------------------------------------------------------------------------------------

foreach函数:$(foreach <var>,<list>,<cmd>)

函数功能:用var便利list,并且cmd执行操作

示例:

names := a b c d

files := $(foreach n,$(names),$(n).o)

#结果:$(files)的值是“a.o b.o c.o d.o”。

-------------------------------------------------------------------------------------------------------------------------------------------

wildcard函数 $(wildcard PATTERN...) 

函数功能:显示指定路径下指定文件类型PATTERN的所有文件(以相对路径显示)

示例:

src=$(wildcard *.c ./sub/*.c)
all:
 @echo $(src)
#输出:
# a.c b.c ./sub/sa.c ./sub/sb.c

-------------------------------------------------------------------------------------------------------------------------------------------

notdir函数 $(notdir PATTERN...) 

函数功能:显示文件列表的全部文件名

示例:

src=$(wildcard *.c ./sub/*.c)
dir=$(notdir $(src))

all:
 @echo $(src)
 @echo $(dir)

执行结果分析:
第一行输出:
 a.c b.c ./sub/sa.c ./sub/sb.c
 wildcard把 指定目录 ./ 和 ./sub/ 下的所有后缀是c的文件全部展开。

  第二行输出:
  a.c b.c sa.c sb.c
  notdir把展开的文件去除掉路径信息

-------------------------------------------------------------------------------------------------------------------------------------------

addprefix函数: $(addprefix <prefix>, <name1 name2 ...>)

函数功能:把<prefix>加到name序列中的每一个元素前面,添加前缀

示例:

result = $(addprefix %., c cpp)
test:
@echo $(result) #输出:%.c %.cpp

-------------------------------------------------------------------------------------------------------------------------------------------

addsuffix函数: $(addsuffix <prefix>, <name1 name2 ...>)

函数功能:把<prefix>加到name序列中的每一个元素后面,添加后缀

示例:

result = $(addsuffix .%, c cpp)
test:
@echo $(result) #输出:c.% cpp.%

-------------------------------------------------------------------------------------------------------------------------------------------

foreach函数:  $(foreach var text commond)

函数功能:循环处理文件列表。

示例:

src := 1.c 2.c. 3.c 4.c

all:
@echo $(foreach n,$(src), \
$(n) \
$(n) \
)
#输出结果:1.c 1.c 2.c. 2.c. 3.c 3.c 4.c 4.c
 
 
 

makefile的函数集合的更多相关文章

  1. Mysql函数集合

    Mysql提供了很多函数 提供的常用函数集合 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整 ...

  2. 跟我一起写Makefile:使用函数

    跟我一起写Makefile:使用函数 两个排版不一样 书籍下载 书籍下载

  3. php 常用函数集合(持续更新中...)

    php 常用函数集合 在php的开发中,巧妙的运用php自带的一些函数,会起到事半功倍的效果,在此,主要记录一些常用的函数 1.time(),microtime()函数 time():获取当前时间戳 ...

  4. makefile(3)函数

    前言 学习make和makefile的主要目的是分析大型项目的源代码的关系,上一节我们讲述了makefile 中的变量,本节主要学习一下 makefile 中的函数,首先函数肯定可以分为几部分: 内置 ...

  5. Makefile常用函数(转)

    一.字符串处理函数 1.$(subst FROM,TO,TEXT) 函数名称:字符串替换函数-subst. 函数功能:把字串"TEXT"中的"FROM"字符替换 ...

  6. XSLT函数集合:数值函数、字符串函、节点集函数和布尔函数

    任何的编程语言或者是SQL语句都有内置的函数或方法,而强大灵活的xslt技术也是如此.熟练掌握XSLT的常用函数的用法,XSLT的应用将变得如此轻松,你会发现XSLT比想象中还要牛!以下是xslt数值 ...

  7. makefile常用函数

    标签(空格分隔): makefile 1.字符串替换和分析函数 $(subst from,to,text) #在文本"text"中使用"to"替换每一处&quo ...

  8. 调试makefile—subst函数

    操作系统:ubuntu10.04 Makefile里的subst用法是$(subst FROM,TO,TEXT),即将TEXT中的东西从FROM变为TO Makefile中的字符串处理函数格式:    ...

  9. 标准IO:常用函数集合

    stdio : 标准IO  (1) 流(stream)和文件(file) 流和文件 在Turbo C2.0中是有区别的, Turbo C2.0 为编程者和被访问的设备之间提供了一层抽象的东西, 称之为 ...

随机推荐

  1. 你要偷偷学会排查线上CPU飙高的问题,然后惊艳所有人!

    GitHub 20k Star 的Java工程师成神之路,不来了解一下吗! GitHub 20k Star 的Java工程师成神之路,真的不来了解一下吗! GitHub 20k Star 的Java工 ...

  2. 接口自动化——读取Excle中遇到的问题

    一.module 'openpyxl' has no attribute 'load_workbook'问题 原因:在pycharm中py文件名字为openpyxl导致 修改方法:重新对py名字进行命 ...

  3. Nginx日志分析 awk 命令

    通过Nginx日志,可以简单分析WEB网站的运行状态.数据报表.IP.UV(unique visitor指独立访客访问数,一台电脑终端为一个访客.).PV(page view即页面访问量,每打开一次页 ...

  4. 学习笔记-vue hash模式打包

    1.打包设置config->index.js 2.图片资源路径出现问题 设置下utils.js文件

  5. java面试一日一题:mysql事务是如何实现的

    问题:请讲下mysql的事务是如何实现的 分析:该问题主要考察对事务的理解及实现方式: 回答要点: 主要从以下几点去考虑, 1.对事务的概念的理解? 2.事务的实现方式? 讲到mysql的事务,很快可 ...

  6. Dynamics CRM Report安装出错三

    需要删除和备份报表服务的密钥集 进入到Micorsoft SQL Server Reporting Services配置管理器 选择"加密密钥",点击"删除" ...

  7. 最清晰易懂的 Go WaitGroup 源码剖析

    hi,大家好,我是haohongfan. 本篇主要介绍 WaitGroup 的一些特性,让我们从本质上去了解 WaitGroup.关于 WaitGroup 的基本用法这里就不做过多介绍了.相对于< ...

  8. Java8中的Optional操作

    作者:汤圆 个人博客:javalover.cc 前言 官人们好啊,我是汤圆,今天给大家带来的是<Java8中的Optional操作>,希望有所帮助,谢谢 文章纯属原创,个人总结难免有差错, ...

  9. 《Python编程:从入门到实践》基础知识部分学习笔记整理

    简介 此笔记为<Python编程:从入门到实践>中前 11 章的基础知识部分的学习笔记,不包含后面的项目部分. 书籍评价 从系统学习 Python 的角度,不推荐此书,个人更推荐使用< ...

  10. Mybatis3源码笔记(一)环境搭建

    1. 源码下载 地址:https://github.com/mybatis/mybatis-3.git. 国内访问有时确实有点慢,像我就直接先fork.然后从git上同步到国内的gitte上,然后在i ...