Make
Makefile 中的一行條件檢查
我正在嘗試實現這樣的目標:如果使用者將執行
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
.有任何想法嗎?
這對我有用:
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 文件):