从makefile中的字符串中删除前两个字符?

时间:2015-02-03 20:32:59

标签: makefile

如何从makefile中的字符串中删除前两个字符?

在Windows上,假设我有:

ROOT_DIR := $(dir $(realpath $(firstword $(MAKEFILE_LIST))))

然后,我有:

WINTOOLS := $(ROOT_DIR)/../../wintools
GOWTOOLS := $(WINTOOLS))/Gow/bin

我的GOWTOOLS变量例如:" L:/ path / to / project /../../ wintools / Gow / bin"。现在,如果我尝试从那里运行命令,请说:

$(GOWTOOLS)/sed -e xxxxx

我收到错误消息" ' L:'不被识别为内部或外部命令,可操作程序或批处理文件。"

如果我手动输入路径减去L :.,它可以正常工作。如果我翻转斜线,它工作正常。

如何在Makefile-ese中从工具目录字符串中删除驱动器说明符?

1 个答案:

答案 0 :(得分:3)

我无法想出一个随意删除两个字符的好方法,但您可以使用:在Windows文件路径/名称中不合法的事实,并执行以下操作:< / p>

GOWTOOLS := $(subst :, ,$(WINTOOLS))/Gow/bin)
GOWTOOLS := $(wordlist 2,$(words $(GOWTOOLS),$(GOWTOOLS))

但如果If I flip the slashes, it works fine为真,那么使用它可能更简单/更安全(因为/\在路径名中都不合法):

GOWTOOLS := $(subst /,\,$(WINTOOLS))/Gow/bin)