.PHONY
Makefileでの意味は何ですか?これですが、複雑すぎます。
誰か私に簡単に説明してくれませんか?
ベストアンサー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
ターゲットには、all
、install
、clean
、distclean
、TAGS
、info
などがありますcheck
。