Makefile の "偽の" ルールのターゲットが ".PHONY" である理由はまだわかりません。前提条件としては、はるかに論理的です。
これについて詳しく説明する必要がありますか?A
に依存しB
、B
偽物である場合は、A
偽物でもあります。したがって、依存関係グラフ.PHONY
←<code>B→<code>A は、→<code>B→<code>A と比べてかなり驚くべきもの.PHONY
です。(別の議論は、 の実装がターゲットを非常に特別にmake
処理しなければならないというものです。).PHONY
この批判はかなり理論的に (無意味に) 見えるかもしれませんが、「make は非常に古いものなので、その構文は定着しています」。ただし、構文の変更を提案しているわけではありません。代替手段があります。
GNU Make では (少なくとも)、次の Makefile は phony を宣言しますtarget_A
。
target_A: _PHONY
touch target_A
_PHONY:
#noop
質問 1 :これはとてもシンプルでクリーンです。確かに私はその最初の発明者ではありません。実際、この代替案を考えると、なぜmake
特別な構文が必要だったのでしょうか?
これは、偽のターゲットのワイルドカードに関する質問も非常にうまく解決し、初心者が疑うときに .PHONY の意味に光を当てることさえできるように私には思えます。
質問 2 :このアプローチが劣っている状況を思いつきますか? (呼び出しは役に立ちmake .PHONY
ますか?)
(私は他make
の s を呼び出しましたが、GNU Make は Makefile の読み取りと書き込みの経験がある唯一の実装です。)