Clark GrubbのMakefileスタイルガイドは、次のことを推奨しています。
- すべての偽のターゲットは、.PHONYの前提条件として宣言する必要があります。
- すべての偽のターゲットを1か所にリストするのではなく、各偽のターゲットを.PHONYの前提条件としてターゲット宣言の直前に追加します。
- ファイルターゲットは.PHONYの前提条件であってはなりません。
- 偽のターゲットは、ファイルターゲットの前提条件ではありません。
たとえば、これは次のことを意味します。
.PHONY: all
all:
echo "Executing all ..."
.PHONY: of
of:
echo "Executing of ..."
.PHONY: my
my:
echo "Executing my ..."
.PHONY: rules
rules:
echo "Executing rules ..."
複数のPHONY
ターゲットが許可されています。このStack Overflowの質問も参照してください:「gnu makefileに複数の.PHONYターゲットを持つことは可能ですか?」
また、これは質問で直接言及されていませんがPHONY
、プロジェクト内の実際の入力または中間ファイルと同じ名前のターゲットを持たないように注意する必要があります。たとえば、プロジェクトにrules
(接尾辞なしで)という名前のソースコードファイルがあると仮定した場合、その文字列をPHONY
ターゲットに含めると、予期されるmake
動作が中断される可能性があります。