Подтвердить что ты не робот

Что все правила зависят от самого Makefile

Когда я изменяю Makefile, его правила могут быть изменены, поэтому их следует переоценить, но make, похоже, не так думает.

Есть ли способ сказать в Makefile, что все его цели, независимо от того, зависит от самого Makefile? (Независимо от его названия.)

Я использую GNU make.

4b9b3361

Ответ 1

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

Вот обходной путь. Если правило clean настроено правильно, Make может выполнять его всякий раз, когда make файл был изменен, используя пустой файл dummy в качестве маркера.

-include dummy

dummy: Makefile
    @touch [email protected]
    @$(MAKE) -s clean

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

Ответ 2

Единственный ответ, который я знаю, - это явно добавить makefile в зависимости. Например,

%.o: %.c makefile
        $(CC) $(CFLAGS) -c $<