Почему последнее действие - rm foo.log?
Как избавиться от него?
Ответ 1
По умолчанию GNU make удаляет промежуточные файлы. Поскольку%.txt зависит от%.log, make хочет удалить файл .log. Чтобы предотвратить такое поведение, вы отмечаете их как драгоценные. PRECIOUS или .SECONDARY.
.PRECIOUS: foo.log
Кроме того, вы можете сделать так, чтобы промежуточные файлы не удалялись при использовании .SECONDARY без зависимостей.
Вы создаете a.txt с помощью цепочки неявных правил (в данном случае неявных правил, которые вы определили сами). Итак, Make считает foo.log промежуточный файл и удаляет его, когда он выполняет свою задачу. Вы можете переопределить это поведение, объявив foo.log цель SECONDARY: