GNU Makefile中的填充数字

时间:2012-03-12 16:45:09

标签: makefile padding

在GNU中,您有一个数字列表:

NUMBERS = 8 9 10

如何用前导零填充它们?

NUMBERS = 08 09 10

2 个答案:

答案 0 :(得分:4)

似乎Make(至少GNU Make)没有处理这类数据的功能。你可以疯狂地使用shell(仅在unixes上):

NUMBERS = 8 9 10
NUMBERS2=$(foreach v,$(NUMBERS),$(shell printf '%02d' $(v)))
all:
    echo $(NUMBERS2)

将打印:

08 09 10

答案 1 :(得分:2)

如果每个数字都不是太大,您可以按如下方式实现:

__seq = $(foreach i,$(seq1),$(addprefix $i,$1))
seq1 := 0 1 2 3 4 5 6 7 8 9
seq2 := $(call __seq,$(seq1))
seq3 := $(call __seq,$(seq2))

# Args:
#   1. Padding (1, 2, or 3)
#   2. Numbers
pad = $(strip \
    $(foreach n,$2, \
        $(if $(subst 0,,$n), \
            $(word $n,$(wordlist 2,$(words $(seq$1)),$(seq$1))), \
            $(firstword $(seq$1)))))

NUMBERS := 8 9 10

all:
    echo $(call pad,2,$(NUMBERS))