我试图实现这样的目标:如果用户将运行make build_x version=1.0
则显示Building version 1.0
,否则(make build_x
不带version
参数)显示Building version latest
。但这里的关键是什么 - 我需要将版本设置-
为默认值(以便能够正确使用它git
)。这就是为什么我使用附加变量version_info
替换为-
的原因latest
。
所以我的代码如下所示:
build_x:
$(eval version ?= -)
$(eval version_info = ${if ["${version}" == "-"], "latest", "${version}"})
${INFO} "Doing checkout according to version $(version_info)..."
我知道问题可能出在给 的这个条件上if
。
有任何想法吗?
答案1
这对我有用:
version ?= -
ifeq (-,$(version))
version_info = latest
else
version_info = $(version)
endif
build_x:
@echo version_info = $(version_info)
如果未设置,则设置version
为-
,然后适当填充version_info
。
使用特定于目标的变量和单行变体:
build_x: version ?= -
build_x: version_info = $(if $(version:-=),$(version),latest)
build_x:
@echo version_info = $(version_info)
其工作原理如下(参见总体GNU Make 文档):
答案2
您可以在这里充分利用特定于目标的变量值功能:
build_x: version := latest
build_x:
@echo "Building version $(version)"