スクリプト シリーズ - Makefile から「ifneq / ifeq、フィルター、ストリップ」を学習します (継続的に更新されます)

Makefile 内のいくつかのフラグメントを抽出し、構文を説明します

例1

ifneq "" "$(filter eng.%,$(BUILD_NUMBER))"
  # BUILD_NUMBER has a timestamp in it, which means that
  # it will change every time.  Pick a stable value.
  FILE_NAME_TAG := eng.$(USER)
else
  FILE_NAME_TAG := $(BUILD_NUMBER)
endif

上記の文ではそれぞれ「ifneq」、「filter」、「%」を使用していますが、
ifneqの
条件判定文とifeqその逆、後者の2つのオブジェクトが等しくない場合に条件が成立する、
2つの判定対象について詳しく解説していきます。ここではそれぞれ「はい“”(空值)」と「“$(filter eng.%,$(BUILD_NUMBER))”

filter
"$(filter eng.%,$(BUILD_NUMBER))" の場合、このステートメントは、Makefile のワイルドカードである変数から$(BUILD_NUMBER)含まれる部分をフィルターで除外することを意味します。eng.%%

例:
  $(filter eng.%, "eng.123") の結果は "eng.123" です。
  $(filter eng., "eng.123") の結果は "eng." です。

要約すると、この例の処理は、BUILD_NUMBER変数が含まれているかどうかを判断することです。変数がeng.含まれている場合、FILE_NAME_TAG には eng.$(USER) の値が割り当てられ、そうでない場合は、$(BUILD_NUMBER) の値が割り当てられます。


例2

ifneq ($(strip $(TARGET_NO_KERNEL)),true)
  INSTALLED_KERNEL_TARGET := $(PRODUCT_OUT)/kernel
else
  INSTALLED_KERNEL_TARGET :=
endif


キーワードストリップ开头の機能は、スペースやタブ インデントなどの目に見えない文字を含む、オブジェクト内の空の文字を削除することです结尾

例:
  $(strip " a bc ") の結果は「a bc」になります


おすすめ

転載: blog.csdn.net/In_engineer/article/details/125068439
おすすめ