如何从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中从工具目录字符串中删除驱动器说明符?
答案 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)