首页 > 解决方案 > makefile - 如何读取三元素列表?

问题描述

下面是捕获标签参数的代码:

.PHONY: tag

tag:
    ${INFO} "Tag image with tags $(LIST_ARGS)..."
    # use a, b, c

ifeq (tag, $(firstword $(MAKECMDGOALS)))
    LIST_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)), $(MAKECMDGOALS))
    ifeq ($(LIST_ARGS),)
        $(error You must specify a tag)
    endif
    $(eval $(LIST_ARGS):;@:)  # # Do not interpret "tag" arguments as make target files
    # Copy three element list to variables a, b & c 
endif

跑步make tag 1.1 44 ds23时,

LIST_ARGS存储值1.1 44 ds23

a应该存储1.1

b应该存储44

c应该存储ds23


如何从中读取每个值并分别$(LIST_ARGS)存储在单独的变量a中?任务内bctag

标签: makefilegnu-make

解决方案


没问题:

a := $(word 1, $(LIST_ARGS))
b := $(word 2, $(LIST_ARGS))
c := $(word 3, $(LIST_ARGS))

tag:
    ...

(如果这不满足你,我们可以进一步讨论这个问题。)


推荐阅读