GNU/Linux >> Linux の 問題 >  >> Linux

Makefileで1行の状態チェックイン?

私は次のようなことを達成しようとしています:
ユーザーが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を評価します 、-を置き換えます 空の文字列(: 置換を導入します。検索キーは=の前のテキストです 、置換は=の後のテキストです )

Linux
  1. Redhatのバージョンを確認する方法

  2. 使用中のWordpressのバージョンを確認してください

  3. CentOS のバージョンを確認する方法

  1. コマンドラインでLinuxのカーネルバージョンを確認する方法

  2. コマンドラインからUbuntuのバージョンを確認する方法

  3. Linux シェルスクリプトでの 1 行の if/else 条件

  1. PHPバージョンを確認する方法

  2. TensorFlowバージョンを確認する方法

  3. AlmaLinuxのバージョンを確認する