### 3.6 ほかのMakefileの一部を上書きする

ほかのmakefileとほとんど同じmakefileがあると便利な場合があります。多くの場合、`include`ディレクティブで一方をもう一方に読み込み、ターゲットや変数定義を追加できます。ただし、2つのmakefileが同じターゲットに異なるレシピを指定することはできません。しかし、別の方法があります。

読み込み側のmakefile（ほかのmakefileを読み込みたい方）では、何にでも一致するパターンルールを使えます。読み込み側のmakefileにある情報では作れないターゲットを作り直すときは、別のmakefileを調べるよう`make`に指定するのです。パターンルールの詳細は、{{0|パターンルールの定義と再定義}}を参照してください。

たとえば、ターゲット`foo`（およびほかのターゲット）の作り方を記述した`Makefile`がある場合、次の内容の`GNUmakefile`を書けます。

`make foo`と実行すると、`make`は`GNUmakefile`を見つけて読み込み、`foo`を作るために`frobnicate > foo`というレシピを実行する必要があると判断します。`make bar`と実行すると、`make`は`GNUmakefile`で`bar`を作る方法を見つけられないため、パターンルールのレシピである`make -f Makefile bar`を使います。`Makefile`に`bar`を更新するルールがあれば、`make`はそれを適用します。`GNUmakefile`が作り方を指定していない、ほかのターゲットについても同様です。

この仕組みでは、パターンルールのパターンが単なる`%`なので、あらゆるターゲットに一致します。このルールは前提条件として`force`を指定し、ターゲットファイルがすでに存在する場合でも、確実にレシピを実行させます。`force`ターゲットには空のレシピを指定し、`make`がそれを作るための暗黙のルールを探さないようにします。そうしなければ、同じ「何にでも一致する」ルールを`force`自体にも適用し、前提条件のループを作ってしまいます！
