我使用 foreach 在GNU makefile中生成一个列表:
foreach
DEFINES += DEF1 DEFINES += DEF2 ... MY_DEFINES := $(foreach define,$(DEFINES),\"$(define)\",\n)
当我将定义打印到文件中时
echo -e "$(MY_DEFINES)";
我得到以下内容:
DEF1, DEF2,
如何删除最后一个列表成员中的逗号?我的输出需要是:
DEF1, DEF2
逐步解决方案可能是:
COMA := , DEFINES += DEF1 DEFINES += DEF2 ... MY_DEFINES := $(patsubst %,%$(COMA),$(DEFINES))FOOBAR MY_DEFINES := $(patsubst %$(COMA)FOOBAR,%,$(MY_DEFINES)) MY_DEFINES := $(patsubst %,%\n,$(MY_DEFINES))
FOOBAR 是任何字符串,你100%肯定永远不会成为你的 DEFINES 之一 .
FOOBAR
DEFINES
使用 head 来切断最后2个字节的一种方法,例如:
head
echo -e "$(MY_DEFINES)" | head --bytes=-2
另一种方法是为每个元素添加 ,\n 作为第一个元素的前缀:
,\n
MY_DEFINES := $(firstword ${DEFINES})$(foreach define,$(wordlist 2,$(words ${DEFINES}),${DEFINES}),\n,\"$(define)\")
2 回答
逐步解决方案可能是:
FOOBAR
是任何字符串,你100%肯定永远不会成为你的DEFINES
之一 .使用
head
来切断最后2个字节的一种方法,例如:另一种方法是为每个元素添加
,\n
作为第一个元素的前缀: