patsubst 应该是 makefile 里的一个函数 (如果你问的 patsubst 是其他语言里的,那就别看下面的了)
比方说你在 makefile 里定义了一个变量,内容是一堆 .c 文件的的名字,如
SRC = aaa.c bbb.c my.c his.c
你可以用 patsubst 根据 某种模式,将这些名字改成另外的,比如将这些 .c 文件的名字变成 .s 为后缀的名字:
NEW = $(patsubst \”%.c\”, \”%.s\”, ${SRC})
这样 NEW 这个变量中,就记录了 aaa.s bbb.s my.s his.s 这些后缀名为 .s 的文件。 上面命令中的模式字符串就是 \”%.c\” 或 \”%.s\”, 而其中的 \”%\” 就是特殊的匹配字符,对于 aaa.c 这个字符串来说, \”%.c\” 中的% 就匹配 aaa。 这个很像我们在 bash 或者 dos 下用 *.c 匹配所有 .c 文件时候的那个 *
makefile当中foreach能不能和patsubst一起使用
不是,这个只是做字符串转换,比方说你在makefile里定义了所有要编译的源文件
SRCC
=
a.c
b.c
c.c
那么你可以用
patsubst
这个函数来将
SRCC
里存放的源文件名字转换成对应的目标文件名,
OBJS

=
$(patsubst
%.c,
%.o,
$(SRCC))
此时
OBJS
的内容就是
a.o
b.o
c.o
makefile当中foreach能不能和patsubst一起使用
不是,这个只是做字符串转换,比方说你在makefile里定义了所有要编译的源文件
SRCC = a.c b.c c.c
那么你可以用 patsubst 这个函数来将 SRCC 里存放的源文件名字转换成对应的目标文件名,
OBJS = $(patsubst %.c, %.o, $(SRCC))
此时 OBJS 的内容就是 a.o b.o c.o
以上就是关于patsubst:模式字符串替换 我想问下什么是模式字符串啊??这是一道linux的知识。全部的内容,如果了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
