私は次のようなことを達成しようとしています:
ユーザーがmake build_x version=1.0
を実行する場合 次に、Building version 1.0
を表示します 、else(make build_x
version
なし param)showBuilding 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のドキュメント全体を参照してください):
-
version ?= -
version
を設定します-
へ まだ設定されていない場合 -
if
最初の引数をチェックし、空かどうかを評価します。最初の引数が空でない場合は2番目の引数に置き換えられ、空でない場合は3番目の引数に置き換えられます。 -
$(version:-=)
version
を評価します 、-
を置き換えます 空の文字列(:
置換を導入します。検索キーは=
の前のテキストです 、置換は=
の後のテキストです )