Makefile--使用函数
发布日期:2021-05-24 22:26:47 浏览次数:12 分类:精选文章

本文共 2248 字,大约阅读时间需要 7 分钟。

Makefile中的函数使用手册

Makefile提供了丰富的函数功能,可帮助开发者在编写构建脚本时提升效率。这些函数的应用使得命令或规则更加灵活且具有智能。以下是Makefile支持的主要函数及其用途详细说明。

Function调用语法

函数调用与变量使用类似,都以“$”字符开头,语法为:

$(function_name arguments)

${function_name arguments}

函数名和参数之间以空格分隔,参数之间以逗号分隔。统一使用相同的括号类型(圆括号或花括号)会更为规范。

字符串处理函数

1. $(subst string_from string_to string_result)

功能:替换字符串中的从string_from到string_to部分为空string_result。示例:$(subst ee,EE,feet on the street) 将"feet on the street"中的"ee"替换为"EE",返回结果是"fEEt on the strEEt"。

2. $(patsubst pattern,string_from,string_to)

功能:按单词模式替换,pattern可以包含通配符“%”,表示任意长度字符串。替换时,保留原始单词结构。示例:$(patsubst %.c,%.o,src/foo.c) 可替换文件扩展名为.obj。

3. $(strip)

功能:去除字符串末尾和开头的空格。示例:$(strip a b c ) 去除空格返回“a b c”。

4. $(findstring find_in string)

功能:在string中查找是否存在find_in,如果存在返回该字符串,否则返回空字符串。示例:$(findstring a,a b c)$(findstring a,b c) 返回值分别为"a"和空串。

5. $(filter pattern... , text)

功能:按模式过滤text中的单词,保留符合条件的单词。示例:$(filter %.c %.s, src/foo.c) 提取符合条件的文件名。

6. $(filter-out pattern... , text)

功能:按模式反向过滤text中的单词。示例:$(filter-out *.o, src/foo.o) 剩余非.o文件。

7. $(sort)

功能:按升序排列字符串中的单词并去重。示例:$(sort foo bar lose) 返回“bar foo lose”。

文件名操作函数

这些函数主要用于文件路径的处理和管理。

1. $(dir names...)

功能:提取文件名序列中的目录部分。示例:$(dir src/foo.c hacks) 返回值为“src/ ./”。

2. $(notdir names...)

功能:提取文件名序列中的非目录部分。示例:$(notdir src/foo.c hacks) 返回值为“foo.c hacks”。

3. $(suffix names...)

功能:提取文件名序列中的文件后缀。示例:$(suffix src/foo.c src-1.0/bar.c hacks) 返回值为“.c .c”。

4. $(basename names...)

功能:提取文件名序列中的文件前缀。示例:$(basename src/foo.c src-1.0/bar.c hacks) 返回值为“src/foo src-1.0/bar hacks”。

5. $(addsuffix suffix, names...)

功能:将后缀suffix添加到names中的每个文件名后。示例:$(addsuffix .c,foo bar) 返回值为“foo.c bar.c”。

6. $(addprefix prefix, names...)

功能:将前缀prefix添加到names中的每个文件名后。示例:$(addprefix src/,foo bar) 返回值为“src/foo src/bar”。

7. $(join list1, list2)

功能:将list2中的内容依次添加到list1对应的文件名后。示例:$(join aaa bbb, 111 222 333) 返回值为“aaa111 bbb222 333”。

流程控制函数

1. foreach (var, list, text)

功能:对list中的每个元素进行处理,并将处理结果存储到变量var中,最后返回整体结果。示例:$(foreach n, $(names), $(n).o) 将列表中每个元素扩展为文件依赖。

2. if condition, [then-part], [else-part]

功能:条件语句,若条件满足按then-part处理,否则按else-part处理。示例:$(if $(error),,.backup) 若存在错误则处理备份文件。

调控Make函数

1. $(error Text)

函数:生成致命错误,显示指定的文本信息。

2. $(warning Text)

函数:显示警告信息,不终止Make程序。

参考资源

Makefile官方文档

通过合理搭配以上函数,你可以实现复杂的文件管理、构建依赖关系以及自动化任务的执行。这些函数为Makefile编写更加灵活的构建脚本提供了强大支持。

上一篇:Makefile--Make运行
下一篇:Makefile--使用条件判断

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年05月04日 17时30分12秒