どのような地獄です.偽目標?


規則入門


このMakefile Serieに関する以前の記事では、非常にシンプルなMakefileを書きました.ルールは非常に簡単な方法で書かれています.
target_name:
   <instruction 1>
   <instruction 2>
    ....
あるいはもう少し複雑なものですが、まだとても簡単な方法です.
target_name: another_target
   <instruction 1>
   <instruction 2>
    ....
時々私はいくつかのオープンソースプロジェクトや単に私の作業プロジェクトで複雑な何かに会った.以下に例を示します:
target_name: another_target
   <instruction 1>
   <instruction 2>
    ....
.PHONY :target_name
問題はです.地獄は.PHONYですか?

同じ名前のファイルとの衝突


このような規則があるとしましょう.
bighello:
    echo "hello"
ランmake bihelloを実行すると、「hello」と表示されます.しかし、bightelloと呼ばれるファイルが同じフォルダでつくられるとき、何が起こりますか?
touch bighello
それで私たちはbighelloと呼ばれる規則とファイルを同じ方法で呼びます.我々がbighelloを走らせるとき、現在起こること?
make bighello                                                                                                                                                                                 
make: `bighello' is up to date.
ここでは紛争がある!

偽ターゲット


この種のターゲットはファイルの名前ではありません.それはちょうどレシピの名前です.明示的なリクエストを行うときに実行する必要があるレシピ.ルールを書くこの方法は、同じ名前のファイルとの衝突を避けます.
ルールを書き換えることができます.偽罪税
bighello:
    echo "hello"
.PHONY: bighello
今すぐ動作!

結論


前に述べた通り.偽の構文は、同じ名前のファイルとの衝突を避けるのを助けます.この特別な目標により複雑さがあります.私は、Makefileの非複雑な使用のために十分であると思います.しかし、あなたが偽の目標に深く行きたいならば、私はあなたに.Phony targesについてRed GNU公式ドキュメンテーションに提案します.