Почему `make logs` не запускает команду?

#makefile

#makefile

Вопрос:

У меня есть следующий Makefile :

 logs:
    sudo docker logs -f maitre_d_backend
  

Когда я это делаю make logs , я получаю make: ``logs' is up to date.

Но если я изменю Makefile цель с logs на log , то make log все будет работать так, как ожидалось.

Что не так с logs target?

Комментарии:

1. Все в порядке. logs , по-видимому, уже обновлена. Чего вы ожидали make от выполнения?

2. @melpomene: Какие logs из них обновлены?

Ответ №1:

Это сообщение означает, что у вас есть файл или каталог с именем logs , который уже существует. Когда make просматривает целевой объект, у которого нет предварительных условий (поскольку logs целевой объект этого не делает), то целевой объект считается обновленным, если этот файл (или каталог) существует, и он считается устаревшим, если этот файл (или каталог) не существует.

Если вы пытаетесь использовать logs в качестве внутреннего специального целевого имени и не хотите привязывать его к реальному файлу (или каталогу) на диске, то вам следует объявить его фальшивым:

 .PHONY: logs
logs:
        ...