Isso funciona para mim:
version ?= -
ifeq (-,$(version))
version_info = latest
else
version_info = $(version)
endif
build_x:
@echo version_info = $(version_info)
Define version
para -
se não estiver definido e preenche version_info
apropriadamente.
Usando variáveis específicas de alvo e uma variante de uma linha:
build_x: version ?= -
build_x: version_info = $(if $(version:-=),$(version),latest)
build_x:
@echo version_info = $(version_info)
Isso funciona da seguinte maneira (veja a documentação do GNU Make ):
-
version ?= -
defineversion
como-
se ainda não estiver definido -
if
verifica seu primeiro argumento , avalia para ver se está vazio ou não, e é substituído pelo segundo argumento se o primeiro não for vazio e o terceiro for -
$(version:-=)
avaliaversion
, substituindo-
com a string vazia (:
introduz a substituição, a chave de busca é o texto antes de=
, a substituição é o texto depois de=
)