私は次のことを達成しようとしています。ユーザーが実行されている場合は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
。
ターゲット固有の変数と1行のバリアントを使用します。
build_x: version ?= -
build_x: version_info = $(if $(version:-=),$(version),latest)
build_x:
@echo version_info = $(version_info)
次のように動作します(全体を参照)。GNUドキュメントの作成):
version ?= -
セットversion
-
まだ設定していない場合if
最初のパラメータを確認してください。、空であるかどうかを評価し、最初の引数が空でない場合は2番目の引数に置き換え、空の場合は3番目の引数に置き換えます。$(version:-=)
評価するversion
、変える-
空の文字列を使用する(:
置換の導入、検索キーは前のテキスト、置換=
は次のテキストです=
)
答え2
ここでは、ターゲット固有の変数値機能を最大限に活用できます。
build_x: version := latest
build_x:
@echo "Building version $(version)"