Делать всегда, даже если нет изменений файла - PullRequest
0 голосов
/ 05 марта 2020

Я пишу простой Makefile:

all: image 

image: ./common ./source
    docker build -t some-resource -f source/Dockerfile .

.PHONY: all image

Я ожидаю, что image создается только тогда, когда файлы в папках common или source имеют изменения. Но когда я запускаю make, он всегда запускает docker run даже без каких-либо изменений файла. В чем проблема?

1 Ответ

1 голос
/ 05 марта 2020

Когда вы запустите make, он попытается создать первую цель, которая является all. Это заставляет make сделать цель image. Поскольку нет фактического файла с именем image (вы даже сказали make, что это phony target), он всегда будет выполнять команду docker.

В этом случае он make не может определить, что «общие и исходные тексты имеют изменения». Обычно make делает это, сравнивая временные метки модификации цели и зависимостей, но нет фактической цели для проверки (image не файл).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...