在一个规则中设置变量,并在另一个规则中使其可用



我有以下制作文件:

.ONESHELL:
SHELL := /bin/bash
build-%:
        @[ $(findstring -, $*) ] && DIR_ENV=$(subst -,/,$*) || DIR_ENV=$*
        @echo ${DIR_ENV}

我试图提供DIR_ENV但没有运气。我知道执行的每个命令都是在自己的 shell 中执行的,因此不会共享变量。但是,我添加了ONESHELL指令。但它仍然不起作用。我错过了什么?

您缺少由 make 首先计算字符串${DIR_ENV}并且结果值为空字符串的事实。 使用这个

build-%:
        @[ $(findstring -, $*) ] && DIR_ENV=$(subst -,/,$*) || DIR_ENV=$*
        @echo $${DIR_ENV}

还有制作语法

$(if $(findstring -,$*),$(subst -,/,$*),$*)

Make中的if/then/else逻辑,而不是shell

相关内容

最新更新