Makefileでbashパラメータ拡張を使用できますか?

Makefileでbashパラメータ拡張を使用できますか?

私のビルドファイル:

FULL_VERSION ?= 1.2.3
MINOR_VERSION := $(shell echo "${FULL_VERSION%.*}")

test:
    echo $(MINOR_VERSION)

私は走ってmake test何も得られず、それを望んでいます1.2

sed / grepを介して取得できることを知っていますが、よりエレガントなソリューションを探しており、bashパラメータ拡張よりも単純なものはありません。

ベストアンサー1

まず、シェル変数に値を保存する必要があります。

MINOR_VERSION := $(shell v='$(FULL_VERSION)'; echo "$${v%.*}")

$(FULL_VERSION)一重引用符が含まれていないと仮定)

これで電話をかけてもsh機能しませんbash${var%pattern}は標準sh演算子です(からksh)。

特定の代理人を使用するには、withの代わりに電話をbash知らせる必要があります。makebashsh

SHELL = bash

ただし、多くのシステムにはデフォルトでMakefileがインストールされていないため、bashMakefileを移植できなくなります(ただし、一部のシステムにはGNUがなく、makeすでにいくつかのGNUismを使用しています)。

おすすめ記事