makeコマンドの後ろに、実際のファイル名ではなく、独自のキーワードを指定することで、makeコマンドの動作を切り替えることが出来る。
これを疑似ターゲット(Phonyターゲット, ".PHONY")という。
- 自動化のためのGNU Make入門講座 - Makefileの基本:ルール
いまさら人に聞けないmake入門 - UUUM攻殻機動隊(エンジニアブログ)
Makefileで、
.PHONY: ファイルとしては存在しないターゲット ファイルとしては存在しないターゲット: 何らかの処理
つまり、
こう。
1番上のmain.shは通常のターゲットとなるファイル。
addとcleanはもちろんファイルとしては存在しないが、addでmain.shにコマンドを追記しているし、cleanはmain.shを削除している。
このようにいくつかの処理の切り替えを疑似ターゲットを指定することで実現している。
$ ls Makefile $ make echo "echo 123" > main.sh $ ls Makefile main.sh $ cat main.sh echo 123 $
何も指定していないので、main.shをターゲットとした処理。
$ make add echo "echo 456" >> main.sh $ ls Makefile main.sh $ cat main.sh echo 123 echo 456 $
addを指定すると、main.shに追記される。
$ make clean rm main.sh $ ls Makefile $
cleanを指定すると、main.shが削除される。
Sample/make/target/phony_target/src/target at master · bg1bgst333/Sample · GitHub