Makefileには、条件分岐の機能が用意されている。汎用的なプログラミング言語のように強力なものではないが、Makefileの中で必要になる最低限の分岐処理は可能になっている。この機能を使うことで「LinuxとMac」「LinuxとWindows」といった異なるプラットフォーム上で共用できるMakefileを作成することができる。今回は、この条件分岐機能について説明しよう。
条件ディレクティブ
GNU makeには条件分岐に使うことができるディレクティブが用意されている。構文は主要なプログラミング言語のif制御構文と似ており、次のように条件が「真」だったときの処理と「偽」だったときの処理を分けることができる。
条件ディレクティブ
真の場合の処理
else
偽の場合の処理
endif
GNU makeの条件ディレクティブは、連続して使用可能だ。例えば、上記の記述の「else」の後に条件ディレクティブを続けて記述することができる。書き方をまとめると、次のようになる。
条件ディレクティブ1
上が真の場合の処理
else 条件ディレクティブ2
上が真の場合の処理
else 条件ディレクティブ3
上が真の場合の処理
...
else
偽の場合の処理
endif
条件ディレクティブは変数定義の段階でも使えるし、レシピ部分に挟んで使うこともできる。この処理は入れ過ぎると混乱のもとになるので、使うときは必要最小限で済むように工夫した方がよい。