Makefile: предполагается, что файл обновлен для конкретной цели? - PullRequest
1 голос
/ 15 марта 2019

Я использую GNU Make для построения графиков для бумаги.У меня есть две цели:

  • data, которая перестраивает папку data / *. Csv.Это очень вычислительно дорого.(Также в денежном выражении.)
  • plot, который перестраивает графики из данных / папки

Теперь, из-за того, насколько дорогостоящим является data, я передалрезультирующие файлы в git.Я хотел бы избежать их изменения, когда это возможно.Но когда кто-то клонирует git-репозиторий, он портит mtime файлов, поэтому make plot хочет восстановить data, даже если они уже есть.

Тем не менее, я не хочуудалить целевую зависимость!Если по какой-то причине я пересчитываю что-то в data, я хочу, чтобы графики это увидели и смогли восстановить сами.Кроме того, если отсутствует один CSV-файл, я хочу, чтобы он вычислялся.

В идеале я думаю, что мне нужно иметь способ сказать «если эти файлы присутствуют, предположим, что они обновлены»,Есть ли способ сделать это в GNU Make?

1 Ответ

1 голос
/ 15 марта 2019

Благодаря комментарию Renaud Pacalet я использовал зависимости только для заказа , чтобы переписать мое правило следующим образом:

data/%.csv: | source/%.py
    ...

Использование этого | позволяет make никогда не перестраивать существующий CSV-файл.

...