Makefile: make clean вызывает другие правила независимо от них - PullRequest
0 голосов
/ 02 февраля 2012

Я написал make-файл, который ведет себя странно. Вы можете найти его здесь: http://pastebit.com/pastie/8215

Обычно каждый раз, когда я набираю команду make clean, make выполняет правила в строках 44, 40 и 25 (в этом порядке). Это очень странно, так как ничего не зависит от чистоты, и чистота не имеет никаких зависимостей.

Есть мысли?

Ответы [ 2 ]

3 голосов
/ 02 февраля 2012

Я думаю, вам нужно добавить это в конец вашего Makefile:

ifneq ($(MAKECMDGOALS),clean)
-include .depend
endif

и удалить «include .depend» из строки 29.

1 голос
/ 02 февраля 2012

Это потому, что вы include .depend в строке 29, что зависит от $(SRCLIST), что, в свою очередь, производится с использованием правил, которые вы упомянули в своем вопросе.

С Как перерабатываются файлы Makefile глава:

С этой целью, после прочтения во всех make-файлах, make рассмотрит каждый из них как цель и попытается обновить его. Если в make-файле есть правило, в котором указано, как его обновить (находится в том же самом make-файле или в другом) или если к нему применяется неявное правило (см. «Использование неявных правил»), оно будет обновлено при необходимости.

Также я думаю, что вызов make -d скажет вам кое-что еще об этом.

...