Что делает .PHONY в Makefile?

Что делает .PHONY в Makefile?

10 февраля 2023 г.

Что на самом деле делает .PHONY?

.PHONY используется, чтобы пометить цель как фальшивую. Это означает цель, которая не принимает во внимание для выполнения любой файл, имя которого совпадает с его именем.

Допустим, у нас есть цель с именем clear-cache, которая удаляет кеш приложения

.
clear-cache:
    rm -rf cache/*

В результате получается следующая команда:

command line result 1

Команда cli для удаления кэша в большинстве случаев будет работать нормально, но давайте проверим, что произойдет, если мы добавим файл с тем же именем, что и у цели, на том же уровне, что и Makefile

command line result 2

Теперь при повторном запуске make clear-cache получаем:

command line result 3

Makefile в основном говорит, что у него уже есть целевой файл и его не нужно выполнять.

Это поведение по умолчанию не соответствует нашим ожиданиям в данном случае, и мы хотим переопределить его. В этом случае на помощь приходит директива .PHONY.

Давайте обновим наш пример, чтобы использовать его:

.PHONY: clear-cache
clear-cache:
    rm -rf cache/*

После пометки цели как фальшивой команда ведет себя так, как ожидалось

command line result 4

Совет для профессионалов: еще один способ пометить цели как фальшивые — разместить их все в списке, а не над каждой из них, например:

clear-cache:
    rm -rf cache/*
clear-build:
    rm -rf build/*

.PHONY: clear-cache clear-build

Заключение

Чтобы переопределить поведение по умолчанию в Makefile и использовать некоторые цели, такие как средства выполнения команд, вы можете использовать .PHONY.

Ссылки:


Также опубликовано здесь


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE