gpt4 book ai didi

makefile - 如何在Makefile中将带引号的字符串转换为普通字符串?

转载 作者:行者123 更新时间:2023-12-04 16:32:06 26 4
gpt4 key购买 nike

我不确定我是否已经正确描述了问题,但是目前我正在通过以下方式解决此问题

QUOTEDSTR := "hello world"
NORMALSTR := $(shell echo $(QUOTEDSTR))

是否有一种更内置的方法,使得“make”可以在不调用shell的情况下执行此操作?谢谢

最佳答案

另外一个选项:

NORMALSTR := $(patsubst "%",%,$(QUOTEDSTR))

Beta的答案将删除字符串中的所有引号。上面的解决方案将只删除出现在开头和结尾的引号。例如:
QUOTEDSTR := -DTITLE=\"Title\"

Beta的答案将导致 -DTITLE=\Title\的值,而使用patsubst解决方案时,此值将不会更改。

这取决于您想要什么。

编辑

如果要处理空格,并且仍然仅按照@stefanct的注释在变量的开头/结尾匹配引号,则必须采取一些技巧。首先,您需要找到一个非空格字符,您知道该字符永远不会出现在字符串中。让我们选择 ^,但您可以根据需要选择其他内容。

算法是:将所有空格都转换为该字符,然后从结果单个“单词”中删除引号,然后将该字符的所有实例转换回空格,如下所示:
# Get a variable S that contains a single space
E :=
S := $E $E

NORMALSTR := $(subst ^,$S,$(patsubst "%",%,$(subst $S,^,$(QUOTEDSTR))))

当然,仍然存在并发症。例如,它仅处理空格,而不处理其他空格字符(如TAB)。

关于makefile - 如何在Makefile中将带引号的字符串转换为普通字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10424645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com