Руководство по стилю Makefile от Clark Grubb рекомендует:
- Все фальшивые цели должны быть объявлены, сделав их предпосылками .PHONY.
- добавьте каждую фальшивую цель в качестве предварительного условия .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
Допускается несколько целей; см. также этот вопрос переполнения стека: «Возможно ли иметь несколько целей .PHONY в make-файле GNU?»
Кроме того, хотя это прямо не упоминается в вашем вопросе, необходимо позаботиться о том, чтобы PHONY
в вашем проекте не было цели с таким же именем, как у фактических входных или промежуточных файлов. Например, если ваш проект гипотетически имел имя файла исходного кода rules
(без суффикса), включение этой строки в PHONY
цель может нарушить ожидаемое make
поведение.