make は、条件付きマクロ定義のターゲット部分において、ワイルドカードパターンである % を認識します。以下に例を示します。
profile_% := CFLAGS += -pg
この例は、profile_ という接頭辞を持つすべてのターゲットについて、CFLAGS
マクロを変更します。条件付き定義の値では、パターン置換を使用できます。以下に例を示します。
profile_% := OBJECTS = $(SOURCES:%.c=profile_%.o)
この例は、SOURCES 値に指定されているすべての .c ファイルのベース名の前後に、profile_ という接頭辞および .o という接尾辞を追加します。
部分文字列の置換は、参照されるマクロが展開されてから実行されます。旧バージョンの make では、置換が先に実行されるため、結果を直観的に理解しにくくなっていました。
このバージョンの make は、内側の参照を展開してから外側の参照を展開します。以下に例を示します。
CFLAGS-g = -I../include OPTION = -g $(CFLAGS$(OPTION))
この例の入れ子にした参照の値は、旧バージョンでは NULL 値になりましたが、このバージョンでは -I../include になります。
定義済みマクロの HOST_ARCH および TARGET_ARCH をクロスコンパイルで使用できます。デフォルトでは、arch マクロは、arch コマンドが返す値に設定されます。