在我的makefile中,我有一个带有目录列表的变量,如下所示:
DIRS = /usr /usr/share/ /lib
Run Code Online (Sandbox Code Playgroud)
现在,我需要从它创建PATH变量,它基本相同,但使用分号作为分隔符:
PATH = /usr:/usr/share/:/lib
Run Code Online (Sandbox Code Playgroud)
我怎么做?我的意思是,我如何用分号而不是空格加入DIRS列表的元素?
给定以冒号分隔的路径列表,使用GNU Make获取以空格分隔的列表非常简单:
CPATHS := /usr/bin/foo:/usr/bin/baz:/usr/bin/baz
SPATHS := $(subst :, ,$(CPATHS))
Run Code Online (Sandbox Code Playgroud)
但是,我找不到朝着相反方向前进的好方法.以下hack确实有效(至少在安装了sed的情况下)但是我很确定只有使用Make的内部函数才能有更好的解决方法.
SPATHS := /usr/bin/foo /usr/bin/baz /usr/bin/baz
CPATHS := $(shell echo $(SPATHS) > tmp; sed 's/ \+/:/g' tmp; rm tmp)
Run Code Online (Sandbox Code Playgroud)