`
test_angel
  • 浏览: 51663 次
  • 性别: Icon_minigender_2
  • 来自: 西安
社区版块
存档分类
最新评论

Makefile学习(5)

 
阅读更多

这周学习学习函数的知识。(后天就放假了,很期待!)

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)
  • 说明:返回值是“bar”

 

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)
  • 说明:返回值是“bar lose”

 

3.1.10单词个数统计函数

  • 函数名:words
  • 语法:$(words<text>)
  • 功能:统计<text>中字符串中单词个数
  • 返回:返回字符串<text>中单词数
  • 示例:
$(words foo bar lose)
  • 说明:返回值是“3”

 

 

3.1.11首单词函数

  • 函数名:firstword
  • 语法:$(firstword <text>)
  • 功能:从字符串<text>中取第一个单词
  • 返回:返回字符串<text>中第一个单词
  • 示例:
$(firstword foo bar lose)
  • 说明:返回值是“foo”
分享到:
评论
2 楼 test_angel 2012-04-07  
nanapoleon 写道
那要如何定义函数呢?

在学习(6)中说明啦!
1 楼 nanapoleon 2012-04-02  
那要如何定义函数呢?

相关推荐

    makefile学习手册集合包括《跟我一起写makefile》《gnumakefile》

    《跟我一起写makefile》和《gnumakefile》是两本关于makefile的重要学习资料,它们涵盖了构建自动化工具make的使用、配置以及优化等多个方面。makefile是软件开发中的核心部分,它允许开发者通过简洁的规则定义来...

    Makefile学习参考资料.zip

    这个压缩包“Makefile学习参考资料.zip”包含了两份PDF文档,分别是“跟我一起学Makefile.pdf”和“gun_make.pdf”,很可能是关于Makefile的基础教程和GNU Make的官方文档。 在Makefile中,最重要的概念是目标...

    make以及makefile学习

    以下详细阐述了make以及makefile的学习要点: 1. Makefile概述 Makefile是一个脚本文件,其中包含了编译和链接项目所需的各种规则。它描述了项目中哪些文件需要先编译,哪些文件需要后编译,哪些文件依赖于其他文件...

    Makefile学习

    学习Makefile不仅是掌握其语法,更重要的是理解其背后的编译和链接机制。通过合理组织Makefile,可以高效地管理和自动化复杂的构建过程。对于程序员来说,了解Makefile是走向专业化的必经之路。特别是当涉及到跨平台...

    makefile 学习手册

    《Makefile学习手册》是一本专门针对Makefile开发的详细指南,旨在帮助读者从基础到深入地理解并掌握这一强大的构建工具。Makefile是软件工程中用于自动化编译和链接过程的重要文件,尤其在Unix/Linux环境中广泛使用...

    makefile学习三件套 电子书

    《makefile学习三件套 电子书》是一个针对makefile技术的综合学习资源,它包含了三个核心部分:《gnu make》、《GNU make中文手册》和《跟我一起写Makefile》。这些文档旨在帮助读者深入理解和掌握makefile的编写与...

    Make工具及makefile规则学习

    5. **宏定义**:宏可以在Makefile中定义,用于简化复杂的规则或参数。宏可以通过`$(macro)`或`${macro}`的方式引用。 - **宏的语法**:`name=value`,其中`=`周围的空格会被忽略。 - **宏的替换**:通过使用`$...

    Makefile学习资料.rar

    Makefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料.rarMakefile学习资料....

    Makefile 中文教程.pdf

    * 学习曲线陡峭:Makefile 的语法非常复杂,需要花费一些时间来学习和掌握。 * 不好 debug:Makefile 的错误信息不够明确, debug 相对困难。 Makefile 是一个功能强大且灵活的自动化编译工具,在软件开发过程中...

    Makefile学习笔记.docx

    Makefile学习笔记 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自动推导 ...

    makefile学习资料.

    make中文手册等 小测试: # Readme: # use: make config # use: make dir # use: make # use: make clean # use: make rebuild # use: make cleanall # use: make test # use: make

    makefile 学习pdf

    压缩包中的三份PDF文件分别对应以上三本书的内容,它们构成了一个完整的makefile学习资源库。首先,你可以通过《跟我一起写makefile》快速入门,了解makefile的基本构造和使用。然后,深入研究GNU Make Manual,掌握...

    Makefile教程,Makefile快速学习资料

    标题中提到的“Makefile教程”是指关于Makefile的学习资料,而“Makefile快速学习资料”说明本资料是为快速掌握Makefile编写的入门级教程。Makefile是Unix系统中的一个工具程序,主要用于软件开发中的自动化编译。它...

    makefile编写,学习linux c编程的必备

    通过学习和理解`makefile`,程序员不仅可以更好地组织和管理代码,还能提升大型项目的构建效率,这对于成为一名专业的Linux C程序员来说是必不可少的技能。因此,深入学习`makefile`的编写规则和实践是每个Linux C...

    makefile学习用测试文件.rar

    这个`makefile学习用测试文件.rar`很显然是为了帮助初学者理解和掌握`Makefile`的基本概念和用法。在本文中,我们将深入探讨`Makefile`的主要组成部分,以及如何编写和使用它来编译和管理项目。 `Makefile`的核心...

    makefile示例程序,学习用

    总结来说,这个“makefile示例程序”是一个很好的学习资源,通过它你可以掌握如何编写和使用Makefile来自动化构建项目,提高开发效率。在实际工作中,无论是小型的个人项目还是大型的团队协作,Makefile都是一个不可...

Global site tag (gtag.js) - Google Analytics