吗
我有以下制作文件:
.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