заставляя все правила зависеть от самого Makefile - PullRequest
17 голосов
/ 06 октября 2010

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

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

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

Ответы [ 2 ]

12 голосов
/ 08 октября 2010

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

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

-include dummy

dummy: Makefile
    @touch $@
    @$(MAKE) -s clean

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

1 голос
/ 25 июля 2015

Единственный известный мне ответ на этот вопрос - явное добавление make-файла в зависимости.Например,

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