【发布时间】:2019-03-28 17:34:22
【问题描述】:
我有一堆目标,每个目标对应一个不同的 shell,如下所示:
BASH_VERSION := 4.4
FISH_VERSION := 3.0.0
…
ZSH_VERSION := 5.4.2-r1
.PHONY: dev-pure-on-bash
dev-pure-on-bash:
$(MAKE) dev-pure-on TARGET=bash VERSION="${BASH_VERSION}" ARGS="VERSION=${BASH_VERSION}"
.PHONY: dev-pure-on-elvish
dev-pure-on-elvish:
$(MAKE) dev-pure-on TARGET=elvish VERSION="${ELVISH_VERSION}" ARGS="VERSION=${ELVISH_VERSION}"
.PHONY: dev-pure-on-fish
dev-pure-on-fish:
$(MAKE) dev-pure-on TARGET=fish VERSION="${FISH_VERSION}" ARGS="VERSION=${FISH_VERSION}"
…
.PHONY: dev-pure-on-xonsh
dev-pure-on-xonsh:
$(MAKE) dev-pure-on TARGET=xonsh VERSION="${XONSH_VERSION}" ARGS="VERSION=${XONSH_VERSION}"
.PHONY: dev-pure-on-zsh
dev-pure-on-zsh:
$(MAKE) dev-pure-on TARGET=zsh VERSION="${ZSH_VERSION}" ARGS="VERSION=${ZSH_VERSION}"
.PHONY: dev-pure-on
dev-pure-on:
docker run \
--name run-pure-on-${TARGET} \
--rm \
--interactive \
--tty \
--volume=$$PWD:/home/pure/.pure/ \
pure-on-${TARGET}-${VERSION}
尝试
我尝试使用pattern rule 没有成功:
dev-pure-on-%:
$(MAKE) dev-pure-on TARGET=$* VERSION="${$*_VERSION}" ARGS="VERSION=${$*_VERSION}"
但是我需要 ${$*_VERSION} 中的 $* 大写
问题
如何将里面$*的值大写并用在另一个变量中?
【问题讨论】:
-
使用shell/tr,简单多了。大写纯粹是为了寻找 gmsl(GNU Make 标准库)。
标签: makefile pattern-matching uppercase variable-names