Makefileで空の変数名エラーを回避する方法

Makefileで空の変数名エラーを回避する方法

この makefile の実行コマンドでバージョンを参照するたびに、そのバージョンは VERSION 変数に保存する必要があり、バージョンが指定されていない場合はデフォルト値を使用する必要があります。

これは私のMakefileです。

export $(BUILDVERSION) = $2
VERS = VABCDE.00.00A002

$(info    BUILDVERSION is "$(BUILDVERSION)")
$(info    vers is "$(VERS)")
ifneq ($(BUILDVERSION),undefined)
        VERSION := $(VERS)
endif

ifneq ($(BUILDVERSION),undefined)
        VERSION := $(BUILDVERSION)
endif
$(info    VERSION is $(VERSION))

ケース1:実行パラメータを含めると、次の出力が表示されます。

BUILDVERSION is "VABCDE.00.00A001"
vers is VABCDE.00.00A002
VERSION is "VABCDE.00.00A001"

ケース2:実行パラメータを含めないと、このエラーが発生します。

Makefile:1: *** empty variable name.  Stop.
Makefile:1: *** empty variable name.  Stop.

誰もが私のコードにどのような問題があるのか​​を理解するのに役立ちますか?

ベストアンサー1

問題を理解しているかどうかわかりません。

タスクがバージョン番号を外部に提供し、makeコマンドラインにバージョンが提供されていない場合は、デフォルト値を使用します。それでは、makefile次のようになります。

VERS = VABCDE.00.00A002

$(info    BUILDVERSION is "$(BUILDVERSION)")
$(info    vers is "$(VERS)")

ifdef BUILDVERSION
        VERSION := $(BUILDVERSION)
else
        VERSION := $(VERS)
endif

$(info    VERSION is $(VERSION))

次のように呼び出すことができます。

make BUILDVERSION="not-default-version"

おすすめ記事