How to make a comma-separated list with quotes in (GNU) Makefile

问题描述 投票:0回答:1

我有一个简单的 Makefile:

MARKDOWNS = $(shell find . -type f -name "*.md" ! -name "index.md" ! -name "README.md")
all: list

list:
    echo $(MARKDOWNS)

我的目录有这个

*.md
文件:

$ ls *.md

foo.md bla.md ra.md

所以,Makefile 给了我:

./foo.md ./bla.md ./ra.md

但是期望的输出是

"./foo.md", "./bla.md", "./ra.md"

我怎样才能改变

$(MARKDOWNS)
来实现它?我使用 GNU Make 4.4.1.

list makefile gnu-make
1个回答
1
投票

也许不是最简单的解决方案但有效:

MARKDOWNS = $(shell find . -type f -name "*.md" ! -name "index.md" ! -name "README.md" | sed 's/^/"/;s/$$/",/' | tr '\n' ' ' | sed 's/..$$//')
all: list

list:
    echo '$(MARKDOWNS)'
© www.soinside.com 2019 - 2024. All rights reserved.