从makefile字符串变量中提取模式可以使用makefile中的字符串处理函数和模式匹配功能。以下是一种常见的方法:
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文件名。
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变量包含了提取后的文件名。
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字符串变量中提取模式的一些常见方法,根据具体的需求和字符串格式,可以选择适合的方法进行处理。
领取专属 10元无门槛券
手把手带您无忧上云