【问题标题】:Makefile patsubst to print comma separated values [duplicate]Makefile patsubst 打印逗号分隔值 [重复]
【发布时间】:2017-12-19 19:14:23
【问题描述】:
$ ls /tmp/foo
file1.txt

$ ls /tmp/bar
file5.txt  file7.txt

Makefile 内容:

$ cat Makefile 
NUMS = $(patsubst file%,%,$(basename $(notdir $(wildcard /tmp/foo/file*.txt /tmp/bar/file*.txt))))

all:
        @echo $(NUMS)

当我执行 make 时。

$ make
1 5 7

如何让它以逗号分隔打印数字,例如:1,5,7

【问题讨论】:

  • 只是要指出这个问题比它被标记为重复的问题更复杂:一个人想用冒号替换空格,而这个人想用逗号替换空格。逗号比冒号需要更多的思考,因为在扩展函数时,逗号对于 make 解析器来说是特殊的。冒号并不特殊。

标签: makefile gnu


【解决方案1】:

了解 makefile 解析规则的重要一点是,它与 shell 等其他一些语言不同,它在扩展变量之前分解参数。

好消息是这意味着您可以将任何您喜欢的特殊字符“隐藏”在变量后面:

COMMA := ,
EMPTY :=
SPACE := $(EMPTY) $(EMPTY)

NUMS = $(subst $(SPACE),$(COMMA),$(basename $(notdir $(wildcard /tmp/foo/file*.txt /tmp/bar/file*.txt))))

【讨论】:

    猜你喜欢
    • 2015-05-25
    • 1970-01-01
    • 2018-02-27
    • 2020-05-26
    • 2017-07-04
    • 2011-07-26
    • 2013-07-05
    • 2014-08-07
    • 1970-01-01
    相关资源
    最近更新 更多