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

时间:2013-08-16 14:26:57

标签: variables makefile substitution

makefile

a = d:\wuyu

我的目的是在:之前获得部分。也就是说,例子中的“d”。

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

c = `echo $(a)|sed -e 's/:.*//'`

确实有效。但是由于sed命令中有*** multiple target patterns. Stop.,因此在执行make时会导致另一个问题::。在sed中添加\不起作用。

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

1 个答案:

答案 0 :(得分:2)

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

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

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