Makefile中filter函数的用法

在 Makefile 中,filter 函数用于从一个单词列表中筛选出符合指定条件的单词。它的基本语法如下:

$(filter pattern, text)

其中,pattern 是用于匹配的模式,可以包含通配符 %text 是要进行筛选的单词列表或变量。

举例说明,假设有一个变量 SRC_FILES 包含了多个源文件名,我们想筛选出所有以 .c 结尾的文件:

SRC_FILES := file1.c file2.cpp file3.c file4.h
C_FILES := $(filter %.c, $(SRC_FILES))

在这个例子中,C_FILES 的值将会是 file1.c file3.c,因为这些文件名符合以 .c 结尾的模式。

此外,filter 函数也可以用于更复杂的模式匹配,比如使用多个通配符来筛选不同类型的文件或单词。

总之,filter 函数在 Makefile 中通常用于根据特定的模式从单词列表中选择符合条件的单词,非常有助于在构建过程中对文件名或其他类型的字符串进行筛选和处理。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: makefilefilter函数是用来过滤出符合特定条件的字符串的函数。它的基本语法为:$(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是一个很常用的工具,它可以用来编译、链接、打包等等一系列操作。在makefilefilter函数是一个非常有用的函数,它可以用来选择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的复杂操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

音频金钟小赵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值