获取make变量的第一个字母

时间:2012-10-09 11:03:58

标签: gnu-make

是否有更好的方法来获取GNU make变量的第一个字符而不是

FIRST=$(shell echo $(VARIABLE) | head -c 1)

(这不仅笨拙而且还调用外壳)?

3 个答案:

答案 0 :(得分:8)

这非常可怕,但至少它没有调用shell

$(eval REMAINDER := $$$(VAR))          # variable minus the first char
FIRST := $(subst $(REMAINDER),,$(VAR)) # variable minus that

答案 1 :(得分:3)

GNU Make Standard Library提供了substr功能

<强> SUBSTR

Arguments: 1: A string
           2: Start offset (first character is 1)
           3: Ending offset (inclusive)
Returns:   Returns a substring

我没有测试过,但$(call substr,$(VARIABLE),1,1)应该可以使用

答案 2 :(得分:0)

因为我在自己的搜索中遇到了这个并且没有找到我在这里寻找的是我最终用来解析可以应用于任何已知字符集的十六进制数字

letters := 0 1 2 3 4 5 6 7 8 9 a b c d e f
nextletter = $(strip $(foreach v,$(letters),$(word 2,$(filter $(1)$(v)%,$(2)) $v)))

然后

INPUT := 40b3
firstletter := $(call nextletter,,$(INPUT))
secondletter := $(call nextletter,$(firstletter),$(INPUT))
thirdletter := $(call nextletter,$(firstletter)$(secondletter),$(INPUT))

它很难看,但它与shell无关