这周学习学习函数的知识。(后天就放假了,很期待!)
1.函数的语法:
$(<function> <arguments>)
或者
${<function> <arguments>}
其中:
- <function>是函数名
- <arguments>是函数的参数,参数间以逗号“,”分隔
- 函数名和参数之间以“空格”分隔
- 函数调用以“$”开头,以圆括号或者花括号把函数名和参数括起
2.示例:
comma:=,
empty:=
space:=$(empty) $(empty)
foo:=a b c
bar:=$(subst $(space),$(comma),$(foo))
其中:
- $(comma)的值是一个逗号
- $(space)使用了$(empty)定义了一个空格
- $(foo)的值是“a b c”
- 函数“subst”是一个替换函数,这个函数有三个参数,第一个参数是被替换的字串,第二个参数是替换字串,第三个参数是替换操作作用的字串,这个函数也就是把$(foo)中的空格提啊换成“,”。
- $(bar)调用了函数“subst”,所以$(bar)的值是“a,b,c”
3.字符串处理函数
3.1字符串替换函数
- 函数名:subst
- 语法:$(subst <from>,<to>,<text>)
- 功能:把字串<text>中的<from>字符串替换成<to>
- 返回:返回被替换过后的字符串
- 示例:
$(subst ee,EE, feet on the street)
- 说明:把“feet on the street”中的“ee”替换成“EE”,返回结果是“fEEt on the strEEt”
3.2模式字符串替换函数
- 函数名:patsubst
- 语法:$(patsubst <pattern>,<replacement>,<text>)
- 功能:查找<text>中的单词(单词以“空格”、“Tab”或着“回车”、“换行”分隔)是否符合模式<pattern>,如果匹配,则以<replacement>替换。这里<pattern>可以包括通配符"%",表示任意长度的字串。如果<replacement>中包含"%",那么<replacement>中的这个“%”将是<pattern>中的那个“%”所代表的字串。(可以用“\%”表示真实含义的“%”)
- 返回:返回被替换过后的字符串
- 示例:
$(patsubst %.c,%.o,x.c.c bar.c
- 说明:把“x.c.c bar.c”符合模式[%.c]的单词换成[%.o],返回结果是“x.c.o bar.o”
3.1.3去掉空格函数
- 函数名:strip
- 语法:$(strip<string>)
- 功能:去掉<string>字串中开头和结尾的空格,类似与trim()
- 返回:返回被去掉空格的字符串值
- 示例:
$(strip a b c )
- 说明:把“a b c ”字串中开头和结尾的空格去掉,返回结果是“a b c”
3.1.4查找字符串函数
- 函数名:findstring
- 语法:$(findstring <find>,<in>)
- 功能:在字串<in>中查找<find>字串
- 返回:如果找到,则返回<find>,否则返回空字符串
- 示例:
$(findstring a,a b c)
$(findstring a,b,c)
- 说明:第一个函数返回“a”,第二个函数返回“ ”字符串(空字符串)
3.1.5过滤函数
- 函数名:filter
- 语法:$(filter <pattern...>,<text>)
- 功能:以<pattern>模式过滤<text>字符串中的单词,保留符合模式<pattern>的单词。可以有多个模式
- 返回:返回符合模式<pattern>的字串
- 示例:
sources:=foo.c bar.c baz.s ugh.h
foo:$(sources)
cc $(filter %.c %.s,$(sources)) -o foo
- 说明:$(filter %.c %.s,$(sources))返回值是“foo.c bar.c baz.s”
3.1.6反过滤函数
- 函数名:filter-out
- 语法:$(filter-out <pattern...>,<text>)
- 功能:以<pattern>模式过滤<text>字符串中的单词,去除符合模式<pattern>的单词。可以有多个模式
- 返回:返回不符合模式<pattern>的字串
- 示例:
objects=main1.o foo.o main2.o bar.o
mains=main1.o main2.o
$(filter-out $(mians),$(objects))
- 说明:$(filter-out $(mains),$(objecrs))返回值是“foo.o bar.o”
3.1.7排序函数
- 函数名:sort
- 语法:$(sort<list>)
- 功能:给字符串<list>中的单词排序(升序)
- 返回:返回排序后的字串
- 示例:
$(sort foo bar lose)
-
返回值是“bar foo lose”
- sort函数会去掉<list>中相同的单词
3.1.8取单词函数
- 函数名:word
- 语法:$(word <n>,<text>)
- 功能:取字符串<text>中第<n>个单词(从1开始)
- 返回:返回字符串<text>中第<n>个单词。如果<n>比<text>中的单词数要大,则返回空字符串
- 示例:
$(word 2,foo bar lose)
3.1.9取单词串函数
- 函数名:wordlist
- 语法:$(wordlist <s>,<e>,<text>)
- 功能:从字符串<text>中取从<s>开始到<e>个单词串。<s><e>是一个数字
- 返回:返回字符串<text>中从<s>开始到<e>个单词串。如果<s>比<text>中的单词数要大,则返回空字符串;如果<e>大于单词数,则从<s>开始,到结束
- 示例:
$(wordlist 2,3,foo bar lose)
3.1.10单词个数统计函数
- 函数名:words
- 语法:$(words<text>)
- 功能:统计<text>中字符串中单词个数
- 返回:返回字符串<text>中单词数
- 示例:
$(words foo bar lose)
3.1.11首单词函数
- 函数名:firstword
- 语法:$(firstword <text>)
- 功能:从字符串<text>中取第一个单词
- 返回:返回字符串<text>中第一个单词
- 示例:
$(firstword foo bar lose)
分享到:
相关推荐
《跟我一起写makefile》和《gnumakefile》是两本关于makefile的重要学习资料,它们涵盖了构建自动化工具make的使用、配置以及优化等多个方面。makefile是软件开发中的核心部分,它允许开发者通过简洁的规则定义来...
这个压缩包“Makefile学习参考资料.zip”包含了两份PDF文档,分别是“跟我一起学Makefile.pdf”和“gun_make.pdf”,很可能是关于Makefile的基础教程和GNU Make的官方文档。 在Makefile中,最重要的概念是目标...
以下详细阐述了make以及makefile的学习要点: 1. Makefile概述 Makefile是一个脚本文件,其中包含了编译和链接项目所需的各种规则。它描述了项目中哪些文件需要先编译,哪些文件需要后编译,哪些文件依赖于其他文件...
学习Makefile不仅是掌握其语法,更重要的是理解其背后的编译和链接机制。通过合理组织Makefile,可以高效地管理和自动化复杂的构建过程。对于程序员来说,了解Makefile是走向专业化的必经之路。特别是当涉及到跨平台...
《Makefile学习手册》是一本专门针对Makefile开发的详细指南,旨在帮助读者从基础到深入地理解并掌握这一强大的构建工具。Makefile是软件工程中用于自动化编译和链接过程的重要文件,尤其在Unix/Linux环境中广泛使用...
《makefile学习三件套 电子书》是一个针对makefile技术的综合学习资源,它包含了三个核心部分:《gnu make》、《GNU make中文手册》和《跟我一起写Makefile》。这些文档旨在帮助读者深入理解和掌握makefile的编写与...
5. **宏定义**:宏可以在Makefile中定义,用于简化复杂的规则或参数。宏可以通过`$(macro)`或`${macro}`的方式引用。 - **宏的语法**:`name=value`,其中`=`周围的空格会被忽略。 - **宏的替换**:通过使用`$...
Makefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料....
* 学习曲线陡峭:Makefile 的语法非常复杂,需要花费一些时间来学习和掌握。 * 不好 debug:Makefile 的错误信息不够明确, debug 相对困难。 Makefile 是一个功能强大且灵活的自动化编译工具,在软件开发过程中...
Makefile学习笔记 Makefile是一个编译系统自动构建工具,它可以根据源文件的变化自动编译和链接对象文件,并生成执行文件。Makefile文件包含了一系列的规则和命令,这些规则和命令描述了如何从源文件生成目标文件。...
Makefile学习教程: 跟我一起写 Makefile 0 Makefile概述 0.1 关于程序的编译和链接 1 Makefile 介绍 1.1 Makefile的规则 1.2 一个示例 1.3 make是如何工作的 1.4 makefile中使用变量 1.5 让make自动推导 ...
make中文手册等 小测试: # Readme: # use: make config # use: make dir # use: make # use: make clean # use: make rebuild # use: make cleanall # use: make test # use: make
压缩包中的三份PDF文件分别对应以上三本书的内容,它们构成了一个完整的makefile学习资源库。首先,你可以通过《跟我一起写makefile》快速入门,了解makefile的基本构造和使用。然后,深入研究GNU Make Manual,掌握...
标题中提到的“Makefile教程”是指关于Makefile的学习资料,而“Makefile快速学习资料”说明本资料是为快速掌握Makefile编写的入门级教程。Makefile是Unix系统中的一个工具程序,主要用于软件开发中的自动化编译。它...
通过学习和理解`makefile`,程序员不仅可以更好地组织和管理代码,还能提升大型项目的构建效率,这对于成为一名专业的Linux C程序员来说是必不可少的技能。因此,深入学习`makefile`的编写规则和实践是每个Linux C...
这个`makefile学习用测试文件.rar`很显然是为了帮助初学者理解和掌握`Makefile`的基本概念和用法。在本文中,我们将深入探讨`Makefile`的主要组成部分,以及如何编写和使用它来编译和管理项目。 `Makefile`的核心...
总结来说,这个“makefile示例程序”是一个很好的学习资源,通过它你可以掌握如何编写和使用Makefile来自动化构建项目,提高开发效率。在实际工作中,无论是小型的个人项目还是大型的团队协作,Makefile都是一个不可...