- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
从docs:
$(patsubst PATTERN,REPLACEMENT,TEXT)
在TEXT中找到与PATTERN和
将它们替换为REPLACEMENT。此处PATTERN可能包含%
用作通配符,匹配任意数量的任何字符
一句话之内。
...
单词之间的空格被折叠成单个空格字符;
前导和尾随空白将被丢弃。
现在,给定一个makefile,是:
# The pattern for patsubst, does NOT contain '%'
foo := $(patsubst x,y,x x x)
# The pattern for patsubst, does contain '%'
bar := $(patsubst x%,y,x x x)
# The variable 'foo', is a result from a patsubst-pattern, that did NOT contain a '%'
# The variable 'bar', is a result from a patsubst-pattern, that did contain a '%'
all ::
@echo 'foo is: "$(foo)"'
@echo 'bar is: "$(bar)"'
foo is: "y y y"
bar is: "y y y"
最佳答案
实际上,所有内容都在doc中进行了说明:
在TEXT中查找空格分隔的单词
表示必须将一个或多个空格分开。
符合PATTERN的...
表示仅选择与模式匹配的单词(可以包含一些空格)。
...并将其替换为REPLACEMENT。
表示所选图案将被替换。
一张图片胜过千言万语。
对于PATTERN = X
:
+---- SEPARATORS ----+
| |
+-------+-------+ +--------+------+
| | | |
X space space space X space space space x
| | |
+---------------------+---------------------+
|
PATTERNS
PATTERN = X%
:
+---- SEPARATORS ---+
| |
+-+-+ +-+-+
| | | |
X space space space X space space space x
| | | | |
+------+-----+ +------+-----+ |
| | |
+--- PATTERNS ------+--------------+
%
字符时,可以在替换中重新使用它,如下所示:
$(patsubst x%,y%,xa xb xc)
# Will be "ya yb yc"
%
变量中包含空格字符时,make将在替换中将其删除。
$(patsubst x%,y%,xa xb xc)
# Will also be "ya yb yc"
function.c +146
:函数
patsubst_expand_pat
misc.c +337
:函数
find_next_token
misc.c +325
:函数
next_token
%
中没有
pattern
,则这是一个简单的替换(保留空格)。
text
分开,并消除所有空格(使用
isblank函数)。
关于makefile - Makefile中的函数“patsubst”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32176074/
从docs: $(patsubst PATTERN,REPLACEMENT,TEXT) 在TEXT中找到与PATTERN和 将它们替换为REPLACEMENT。此处PATTERN可能包含% 用作通配符
我试图简化我的一些 makefile,我开始这样做: TEMP_OBJECTS_C = $(patsubst %.c,%.c.o,$(C_SOURCES)) TEMP_OBJECTS_CPP = $(
我有 3 个目录,想将一个可执行文件链接到库 我已经有了目录列表: DIRS=Math Graph Test 我想得到这样的库列表: LIBS=Math/libMath.a Graph/libGrap
为了使我的项目的目录结构更有条理,我想将相同模块的源文件放入单独的目录中。所有目标文件都应该放在 obj 目录中。我也不想在 obj 目录中复制源代码树,所以我正在寻找一种方法来从源文件中删除目录部分
我想为每个输入词生成两个输出词,它们是连续的,并对它们应用 patsubst。 我想要的非工作原型(prototype): $(patsubst %.o,%.a.o %.so.o,$(OBJ)) %
我试图弄清楚 .mk 文件中以下两行的含义 包含$(ROOTDIRECT)/target/$(MYSUBDIR)/defs.mk 包括 $(ROOTDIRECT)/target/$(dir $(pat
这是来自 GNU Make manual section on Secondary Expansion 的示例(稍微简化): foo_SRCS := bar.c baz.c .SECONDEXPANS
我目前正试图让我的 makefile 独立于我的文件夹结构。到目前为止,我使用的是一个包含所有 .cpp 文件的特定文件夹。我的 .o 文件都放在一个单独的 OBJ/文件夹中。但是,我现在希望我的 m
我的生成文件: compiler=g++ cflags=-g -Wall -I. src=$(shell find . -name *.cc) #find all .cc files, with pa
我正在尝试为我的项目编写一个 Makefile,所有 *.c 和 *.h 文件都在一个名为 src 的文件夹中>,Makefile 看起来像这样 -- CC := gcc C
作为测试套件的 make install 规则的一部分,我想将一个目录(src 目录)中的所有二进制可执行文件移动到 bin 目录。我认为一个简单的方法是简单地遍历 src 中的每个文件。目录,然后使
在我的 Makefile 中,我这样做: BINS = 1 2 3 4 然后 OBJS := $(patsubst %,%.o,$(BINS)) 打印:1.o 2.o 3.o 4.o 但我希望它看起来
我在 Windows 8 上使用 GNU make 来了解 makefile。我所指的教程是为 Linux 编写的,因此我正在更正据我所知给出的 makefile,例如用“\”等替换“/” 我的 ma
如何告诉 m4 的 patsubstr 将字符串中的所有换行符替换为空格? 我已经尝试过: patsubst(MULTI_LINE_STR_DEFINE,`\n',` ') 和 patsubst(MU
我有一个如下所示的 makefile: m1: @echo building m1 m1_: @echo building m1_ m2: @echo building m2
我需要在替换变量替换中两次引用词干: O23=$(OROOTS:%=$(ODIR)/overx-%2wk-%3wk.mlb) 我需要用相同的词干执行两次替换,但替换使用 patsubst只做第一个。我
我是一名优秀的程序员,十分优秀!