填充数字
答
看来,制作(至少GNU MAKE)不具备的功能与这种类型的数据的处理好。你可以去野生和使用shell(只在Unix系统中):
NUMBERS = 8 9 10
NUMBERS2=$(foreach v,$(NUMBERS),$(shell printf '%02d' $(v)))
all:
echo $(NUMBERS2)
会打印:
08 09 10
答
如果每个数字不是太大,可以按如下方式实现:
__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))