Makefile での ifeq、filter、strip の簡単な使用法

CSDN は Makefile コードをサポートしていません。

メイクファイルの例

ifneq (,$(filter $(region), global eea ru in id tr tw jp))
ifneq (,$(filter $(region), tw))
PRODUCT_NAME := product_global
else
PRODUCT_NAME := product_$(region)
endif
endif

2 つの変数 (通常は文字列) が等しいかどうかを判断します。

ifeq( 变量1, 变量2)

それらが等しくないかどうかを判断します。

ifneq( 变量1, 变量2)

フィルター

$(filter PATTERN...,TEXT)
関数名: フィルター関数 - フィルター。
Function 機能: 文字列「TEXT」内のパターン「PATTERN」に一致しないすべての単語をフィルターで除外し、このパターンに一致するすべての単語を保持します。複数のパターンを使用できます。通常、パターンにはパターン文字「%」が含まれている必要があります。複数のパターンがある場合、パターン式はスペースで区切られます。
はっきり言って、分かりやすいです。TEXT に一致するパターンがある場合は、対応する文字列を返し、そうでない場合は空を返します。

戻り値: スペースで区切られた「TEXT」文字列内のパターン「PATTERN」に一致するすべての文字列。関数の説明: 「filter」関数は変数内の特定の文字列を削除するために使用できます。この関数は
次の例で使用されています。例:

sources := foo.c bar.c baz.s ugh.h 
foo: $(sources) 
cc $(filter %.c %.s,$(sources)) -o foo 

cc がターゲット「foo」をコンパイルして生成するために使用される戻り値“$(filter %.c %.s,$(sources))”は、関数の戻り
値は「foo.c bar.c baz.s」で、.h 接尾辞ファイルは削除されます。

$(ストリップ)

ストリップはヌル文字を削除するステートメントで、文字列の先頭と末尾にあるヌル文字を削除します (ヌル文字にはスペース、[タブ]、およびその他の表示不可能な文字が含まれます)

ifeq (1, $(strip $(MY_BUILD)))

唯一の欠点は、入れ子になったスペースが多数あり、読みにくいことです。理解するのも不便です。

おすすめ

転載: blog.csdn.net/weixin_40557160/article/details/129831232