首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从makefile字符串变量中提取模式

从makefile字符串变量中提取模式可以使用makefile中的字符串处理函数和模式匹配功能。以下是一种常见的方法:

  1. 使用$(subst from,to,text)函数将字符串变量中的某个子字符串替换为另一个字符串。例如,假设我们有一个字符串变量SRC_FILES包含了一组源文件名,我们想提取其中的.c文件,可以使用以下代码:
代码语言:txt
复制
SRC_FILES := file1.c file2.cpp file3.c file4.h
C_FILES := $(subst .cpp,.c,$(filter %.cpp,$(SRC_FILES)))

上述代码中,$(filter %.cpp,$(SRC_FILES))会返回SRC_FILES中以.cpp结尾的文件名,然后$(subst .cpp,.c,...)将这些文件名的后缀替换为.c,最终得到C_FILES变量包含了.c文件名。

  1. 使用$(patsubst pattern,replacement,text)函数进行模式匹配和替换。例如,假设我们有一个字符串变量SRC_FILES包含了一组源文件名,我们想提取其中的以file开头的文件,可以使用以下代码:
代码语言:txt
复制
SRC_FILES := file1.c file2.cpp file3.c file4.h
FILE_FILES := $(patsubst file%,%,$(filter file%,$(SRC_FILES)))

上述代码中,$(filter file%,$(SRC_FILES))会返回SRC_FILES中以file开头的文件名,然后$(patsubst file%,%,...)将这些文件名中的file前缀去掉,最终得到FILE_FILES变量包含了提取后的文件名。

  1. 使用正则表达式进行模式匹配和替换。makefile中没有内置的正则表达式函数,但可以使用shell命令来实现。例如,假设我们有一个字符串变量SRC_FILES包含了一组源文件名,我们想提取其中的以数字结尾的文件,可以使用以下代码:
代码语言:txt
复制
SRC_FILES := file1.c file2.cpp file3.c file4.h
NUM_FILES := $(shell echo $(SRC_FILES) | grep -oE '[0-9]+')

上述代码中,$(shell echo $(SRC_FILES) | grep -oE '[0-9]+')会将SRC_FILES中的内容通过管道传递给grep命令,并使用正则表达式'[0-9]+'匹配其中的数字部分,最终得到NUM_FILES变量包含了提取后的数字。

以上是从makefile字符串变量中提取模式的一些常见方法,根据具体的需求和字符串格式,可以选择适合的方法进行处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券