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 ?= -defineversioncomo-se ainda não estiver definido -
ifverifica 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=)