疑似ターゲット .PHONY
.PHONYを設定しない場合
1 2 |
clean: rm *.o |
"clean"という名前のファイルやディレクトリがなければ問題ない。しかし、(たまたま)"clean"という名前のファイルまたはディレクトリが存在すると rm *.o
というコマンドは実行されない。
.PHONYを設定した場合
1 2 3 4 |
.PHONY: clean clean: rm *.o |
"clean"という名前のファイルやディレクトリの存在如何に関わらず、 $ make clean
を実行すればmakeコマンドは期待の動作をする。
Makefileの再帰的呼び出し
ディレクトリの移動
1 2 |
FOO_MODULE: $(MAKE) -C ./foo_dir |
以下の記述と等価
1 2 |
FOO_MODULE: cd ./foo_dir && $(MAKE) |
変数の引き継ぎ
1 2 |
FOO_DEFINES = -DBAR_DEFINE export FOO_DEFINES |
または
1 |
export FOO_DEFINES = -DBAR_DEFINE |
環境変数を介して呼び出し先のMakefileのFOO_DEFINESに値が反映される。