このバージョンでは、マクロの値を任意の長さにすることができます。また、旧バージョンではマクロの値から最後の空白文字だけが削除されましたが、このバージョンでは最初と最後の両方の空白文字が削除されます。
マクロの既存の値に、先頭にスペースが付いた文字列を追加します。
ターゲットの条件付きマクロ定義を示す演算子です。
target := macro = value
このようにメークファイルで記述すると、target およびその依存関係を処理する際には、macro が value に指定された値になります。
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 コマンドが返す値に設定されます。
以下の定義は、command で指定されたコマンドの標準出力を MACRO の値として設定します。
MACRO :sh = command
出力に含まれる復帰改行は、空白文字に置換されます。コマンドは、定義が読み込まれたときに 1 回だけ実行されます。標準エラー出力は無視されます。コマンドがゼロ以外の終了ステータスを返した場合は、make はエラーを表示して停止します。
$(MACRO :sh)
このマクロ参照は、参照が評価されるときに MACRO に設定されているコマンド行出力に展開されます。復帰改行は、空白文字に置換されます。標準エラー出力は無視されます。コマンドがゼロ以外の終了ステータスを返した場合は、make はエラーを表示して停止します。