Makefile文件(七)_使用函数

参考http://blog.csdn.net/liang13664759/article/details/1771246/

一、函数的调用语法

函数调用,如变量的使用,也是以“$”来标识的,语法如下:

$(<function> <arguments>)

或者:

${<function> <arguments>}

这里,<function>是函数名,make支持的函数不多,<arguments>是函数的参数,参数间以逗号“,”分隔,而函数名和参数之间以“空格”分隔。函数调用以“$”开头,圆括号或者花括号把函数名和参数括在一起,感觉很像一个变量。函数中的参数可以使用变量,为了风格的统一,函数和变量的括号最好统一一样。

示例:

comma := ,

empty :=

spae := $(empty) $(empty)

foo := a b c

bar := $(subst $(space), $(comma), $(foo))

示例重,$(comma)的值是一个逗号。$(space)使用了$(empty)定义了一个空格,$(foo)的值是“a b c”,$(bar)的定义调用了“subst”替换函数,有三个参数,把$(foo)中的$(space)替换成$(comma),所以$(bar)的值是“a,b,c”

二、字符串处理函数

①、$(subst <from>,<to>,<text>)

名称:字符串替换函数==subst

功能:把字符串<text>中的<from>替换成<to>

返回:替换过后的字符串

示例:

$(subst ee,EE,feet on the street)=====》》》返回结果:fEEt on the srEEt

②、$(patsubst <pattern>,<replacement>,<text>)

名称:模式字符串替换函数---patsubst

功能:查找<text>中的单词是否符合模式<pattern>,如果匹配,则以<replacement>替换。<pattern>可以包含通配符“%”,表示任意长度的字串。如果<replacement>中也包含“%”,那么,<replacement>中的这个“%”是<pattern>中的“%”所代表的字串。

返回:替换后的字符串

示例:$(patsubst %.c,%.ox.c.c bar.c)===》》》把字串“x.c.c bar.c”符合模式[%.c]的单词替换成[%.o],返回结果是“x.c.o bar.o”

时间: 2024-10-23 20:46:32

Makefile文件(七)_使用函数的相关文章

Makefile文件(六)_使用条件判断

参考:http://blog.csdn.net/liang13664759/article/details/1771246/ 使用条件判断,可以让make根据运行时的不同情况选择不同的执行分支.条件表达式可以使比较变量的值,或是比较变量和常量的值. 一.示例 判断$(CC)变量是否"GCC",如果是的话,则用GNU函数编译目标. libs_for_gcc=lgnu normal_libs= foo:$(objects) ifeq($(CC),gcc) $(CC)  -o foo $(o

Makefile文件(三)_书写规则

Makefile书写规则包含两部分,一个是依赖关系,一个是生成目标.在Makefile中,规则的顺序很重要,因为Makefile中只有一个最终目标.一般,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终目标.如果第一条规则中的目标有多个,那么第一个目标会成为最终目标,也就是make所完成的目标. 一.规则举例 foo.o:foo.c defs.h  #foo模块 cc -c -g foo.c 这个规则告诉我们:文件的依赖关系,还有如果要生成或更新foo.o文件,则

Makefile文件(四)_书写命令

变量说明: [email protected]       --->      目标文件 $^       --->       所有的依赖文件 $<       --->       第一个依赖文件 一.显示命令 @echo 正在编译xx模块...... 当make执行时,会输出"正在编译xx模块......",但不会输出命令 echo 正在编译xx模块...... make将输出:echo 正在编译xx模块......  正在编译xx模块...... 说明:

Makefile文件(二)_总述

Makefile总述 一.Makefile里面有什么 Makefile主要包含了五个东西:显示规则.隐晦规则.变量定义.文件指示和注释. 显示规则:明显指出要生成的文件,文件的依赖文件,生成的命令 隐晦规则:make具有自动推导功能,隐晦规则可以比较粗糙地简略书写Makefile 变量定义:如一中的objects 文件指示:一个Makefile中引用另一个Makefile:根据某些情况指定Makefile中的有效部分:定义一个多行的命定 注释:'#',文件中使用该符号可以利用转义符号'/#' 注

linux中Makefile文件相关内容

第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力.因为,makefile关系到了整个

C语言Makefile文件制作

本文摘抄自"跟我一起写Makefile ",只是原文中我自己感觉比较精要的一部分,并且只针对C语言,使用GCC编译器. 原文请看这里:http://wiki.ubuntu.org.cn/%E8%B7%9F%E6%88%91%E4%B8%80%E8%B5%B7%E5%86%99Makefile 写完之后才发现基本上都是一些比较枯燥的规则,看看一.二.八三个部分就可以了.当作参考工具吧,什么时候用到了再来看看. 一.概述 我所使用的make 版本是 GNU Make 3.81,使用的系统是

makefile文件操作大全

 Makefile的规则 -- 转自 :http://blog.csdn.net/ruglcc/article/details/7814546/ 在讲述这个Makefile之前,还是让我们先来粗略地看一看Makefile的规则.  target... : prerequisites ...           command           ...           ...         --------------------------------------------------

Makefile文件编写和autotools的使用

在Linux或Unix环境下,对于只含有几个源代码文件的小程序(如hello.c)的编译,可以手工键入gcc命令对源代码文件逐个进行编译:然而在大型的项目开发中,可能涉及几十到几百个源文件,采用手工键入的方式进行编译,则非常不方便,而且一旦修改了源代码,尤其头文件发生了的修改,采用手工方式进行编译和维护的工作量相当大,而且容易出错.所以在Linux或Unix环境下,人们通常利用GNU make工具来自动完成应用程序的维护和编译工作.实际上,GNU make工具通过一个称为Makefile的文件来

C++学习笔记25:makefile文件2

Makefile文件语法 行解析:命令按行解析 命令行的行首字符为Tab键,其他行的行首字符不得为Tab键,但可以使用多个空格缩进 换行:命令太长时,行尾使用"\"换行 注释:行首字符为"#"的文本行 关闭回显:在行首字符后和命令前添加"@" 未关闭回显时,make会首先回显(打印)命令,然后执行该命令 通常仅在注释和纯显示的echo命令前使用此功能 include filename:包含其他文件 处理模式与c/c++类似 行首加"-&