makefile中的filter函数
时间: 2024-04-25 16:25:26 浏览: 357
makefile中的filter函数是用来过滤出符合特定条件的字符串的函数。它的基本语法为:$(filter pattern...,text),其中pattern为需要过滤的字符串,text为需要进行过滤的字符串列表。函数将返回所有符合pattern的字符串。可以在makefile中使用filter函数来过滤出符合特定条件的文件,方便地进行文件的处理和操作。
相关问题
makefile filter函数的用法
### 回答1:
makefile中的filter函数是用来过滤出符合特定条件的字符串的函数。它的基本语法为:$(filter pattern...,text),其中pattern为需要过滤的字符串,text为需要进行过滤的字符串列表。函数将返回所有符合pattern的字符串。可以在makefile中使用filter函数来过滤出符合特定条件的文件,方便地进行文件的处理和操作。
### 回答2:
makefile是一种常用的编译管理工具,使用makefile可以方便地对代码进行管理。在编写makefile时,我们经常需要使用到filter函数。
filter函数是makefile中的一个内置函数,主要用来对变量中的内容进行筛选。其语法如下:
$(filter pattern…,text)
其中,pattern表示筛选条件,可以是一个或多个模式,多个模式之间使用空格隔开;text表示要进行筛选的内容。
使用filter函数时,它会将text中符合pattern的内容筛选出来,并返回一个由这些内容组成的列表。
例如,我们可以定义一个变量:
var = aaa bbb ccc ddd
然后使用filter函数对其进行筛选:
$(filter a% b%,$(var))
这里的筛选条件是以a开头和以b开头的字符串,结果为:
aaa bbb
同样,我们也可以用filter函数来筛选文件列表:
$(filter %.c,$(wildcard *.c *.h))
这里的筛选条件是.c文件,结果为当前目录下的所有.c文件。
另外,filter函数还可以和其他函数一起使用,例如:
$(filter %.c,$(notdir $(wildcard src/*.c include/*.h)))
这里的notdir函数是用来去除文件路径的,结果是将src目录和include目录下的所有文件筛选出以.c结尾的文件。
总之,filter函数是makefile中非常常用的一个函数,可以很方便地对变量或文件进行筛选和过滤,从而更好地管理和组织我们的代码。
### 回答3:
makefile是一个很常用的工具,它可以用来编译、链接、打包等等一系列操作。在makefile中,filter函数是一个非常有用的函数,它可以用来选择makefile中变量中符合一定条件的值。
filter函数的基本语法如下:
$(filter pattern…,text)
其中,pattern是一个匹配规则,可以使用通配符来匹配。而text则是需要被匹配的字符串。
例如,假设我们有一个变量source_files,它包含了若干个源文件名,我们需要根据文件名后缀来选择其中的文件。那么我们可以使用以下代码:
source_files := a.cpp b.h c.cxx d.hpp
cpp_files := $(filter %.cpp,$(source_files))
h_files := $(filter %.h,$(source_files))
cxx_files := $(filter %.cxx,$(source_files))
hpp_files := $(filter %.hpp,$(source_files))
通过这样的代码,我们就可以将source_files中符合条件的文件名提取出来,放到另外的变量中去。
值得注意的是,filter函数是区分大小写的。如果我们需要忽略大小写,可以使用filter-out函数,它的用法和filter函数类似,只不过它选择的是不符合匹配规则的字符串。
除了基本的匹配规则外,filter函数还支持多个匹配规则同时使用的情况。如果多个规则之间是或的关系,则使用|分隔;如果多个规则之间是且的关系,则使用空格分隔。
例如,假设我们需要选择以.h或.hpp结尾的头文件,可以使用以下代码:
header_files := $(filter %.h %.hpp,$(source_files))
通过这样的代码,我们就可以将符合条件的头文件名提取出来,放到header_files中,用来进行后续的操作。
总之,filter函数是makefile中非常实用的一个函数。我们可以通过它来选择变量中符合条件的值,从而简化makefile中的复杂操作。
makefile的所有函数
在Makefile中,通常使用以下函数:
1. $(subst from,to,text): 将文本 text 中的 from 字符串替换为 to 字符串。
2. $(patsubst pattern,replacement,text): 使用模式匹配,将文本 text 中的 pattern 字符串替换为 replacement 字符串。
3. $(strip string): 去除 string 字符串中的前导空格和尾随空格。
4. $(findstring find,in): 在字符串 in 中查找字符串 find。如果找到,则返回 find,否则返回空。
5. $(filter pattern...,text): 从文本 text 中选取符合模式 pattern 的字符串。
6. $(filter-out pattern...,text): 从文本 text 中去除符合模式 pattern 的字符串。
7. $(sort list): 将列表 list 中的字符串按字典序排序。
8. $(word n,text): 返回文本 text 中的第 n 个单词。
9. $(wordlist s,e,text): 返回文本 text 中从第 s 个单词到第 e 个单词的列表。
10. $(words text): 返回文本 text 中的单词数。
11. $(firstword names...): 返回 names 列表中的第一个单词。
12. $(lastword names...): 返回 names 列表中的最后一个单词。
13. $(dir names...): 返回 names 列表中的路径部分。
14. $(notdir names...): 返回 names 列表中的非路径部分。
15. $(suffix names...): 返回 names 列表中的文件后缀名。
16. $(basename names...): 返回 names 列表中的文件名,不包括后缀名。
17. $(addsuffix suffix,names...): 将列表 names 中的每个字符串后面添加后缀 suffix。
18. $(addprefix prefix,names...): 将列表 names 中的每个字符串前面添加前缀 prefix。
19. $(join list1,list2): 将列表 list1 中的每个字符串与列表 list2 中的每个字符串连接起来。
20. $(wildcard pattern): 返回符合模式 pattern 的文件名列表。
21. $(shell command): 执行 shell 命令,并返回命令的输出结果。
22. $(eval text): 对文本进行求值,将文本作为 Makefile 代码执行。
23. $(call variable,param1,param2,...): 定义一个函数,并返回函数的结果。
24. $(if condition,then-part,else-part): 如果条件 condition 成立,则返回 then-part,否则返回 else-part。
25. $(foreach var,list,text): 对列表 list 中的每个元素执行一次文本 text,并将变量 var 替换为当前元素的值。
26. $(shell), $(eval), $(call), $(if), $(foreach) 等函数还可以嵌套使用。
阅读全文