Makefile の .PHONY の目的は何ですか? 質問する

Makefile の .PHONY の目的は何ですか? 質問する

.PHONYMakefileでの意味は何ですか?これですが、複雑すぎます。

誰か私に簡単に説明してくれませんか?

ベストアンサー1

デフォルトでは、Makefile ターゲットは「ファイル ターゲット」です。つまり、他のファイルからファイルを作成するために使用されます。Make はターゲットがファイルであると想定しているため、Makefile の作成は比較的簡単です。

foo: bar
  create_one_from_the_other foo bar

ただし、場合によっては、ファイル システム内の物理ファイルを表さないコマンドを Makefile で実行したいことがあります。その良い例として、一般的なターゲットである「clean」と「all」があります。おそらくそうではないでしょうが、メイン ディレクトリに名前の付いたファイルがある可能性がありますclean。このような場合、Make は混乱します。これは、デフォルトでターゲットがcleanこのファイルに関連付けられ、依存関係に関してファイルが最新でないと思われる場合にのみ Make がそれを実行するためです。

これらの特別なターゲットはphonyと呼ばれ、ファイルに関連付けられていないことを Make に明示的に伝えることができます。例:

.PHONY: clean
clean:
  rm -rf *.o

make cleanという名前のファイルがあっても、期待どおりに実行されるようになりましclean

Make の観点では、偽のターゲットとは、常に古いターゲットのことです。そのため、 を要求するとmake <phony_target>、ファイル システムの状態に関係なく、いつでも実行されます。偽のターゲットになりやすい一般的なmakeターゲットには、allinstallcleandistcleanTAGSinfoなどがありますcheck

参照:GNU make マニュアル: 偽のターゲット

おすすめ記事