Variables makefile:如何处理变量中的冒号

Variables makefile:如何处理变量中的冒号,variables,makefile,substitution,Variables,Makefile,Substitution,在生成文件中: a = d:\wuyu 我的目的是在:之前获得零件。也就是说,示例中的“d” 使用b=$(patsubst:%,$(a))无效。变量“b”与变量“a”相同。使用 确实有效。但它导致了另一个问题:***多个目标模式。停止。执行make时,因为sed命令中有:。在sed中添加\无效 因此,我如何解决这个问题?patsubst不起作用,因为您的模式是:%,它将只匹配以冒号开头的字符串;字符串不以冒号开头,因此不匹配,因此不执行替换 可以通过将字符串拆分为多个单词来完成此操作: b =

生成文件中

a = d:\wuyu
我的目的是在
之前获得零件。也就是说,示例中的“d”

使用
b=$(patsubst:%,$(a))
无效。变量“b”与变量“a”相同。使用

确实有效。但它导致了另一个问题:
***多个目标模式。停止。
执行make时,因为sed命令中有
。在sed中添加
\
无效


因此,我如何解决这个问题?

patsubst不起作用,因为您的模式是
:%
,它将只匹配以冒号开头的字符串;字符串不以冒号开头,因此不匹配,因此不执行替换

可以通过将字符串拆分为多个单词来完成此操作:

b = $(firstword $(subst :, ,$(a)))

非常感谢。它确实奏效了。我不知道函数
firstword
。现在我学会了。谢谢@warem。我希望SO编辑有匹配的paren:-)
b = $(firstword $(subst :, ,$(a)))