Вы не можете удалить обязательное условие %.d
. Причина, по которой это необходимо , объясняется на странице, на которую вы ссылаетесь.
Я не знаю, что вы подразумеваете под своим комментарием Удаление неявных правил ...? Дважды . Необходимо удалить неявное правило, чтобы гарантировать использование нашего нового неявного правила, и мы удаляем его только один раз.
Временный файл .Td
используется в случае, если кто-то использует ^ C или аналогичный файл, чтобы уничтожить свою работу прямо в середине создания этого файла. Записывая во временный файл, затем только атомарно заменяя реальный файл, как только мы узнаем, что он завершен, нам никогда не придется беспокоиться о частичных файлах, которые могут вызвать следующий вызов make, чтобы вызвать ошибку или, что еще хуже, не перекомпилировать исходные файлы, которые должны быть перекомпилировать.
Что касается комментария об объектных файлах, более старых, чем файл зависимостей, то сначала суть, на которую вы ссылаетесь, использует clang
, а не GCC, и, возможно, у Clang нет этой проблемы (или, возможно, она есть, но люди не осознают этого). Во-вторых, это обновление в блоге является относительно недавним, так как люди сообщали мне об этой проблеме в GCC. Я сам этого не видел (я использую только GCC), поэтому, возможно, это проблема только с некоторыми версиями GCC.
Относительно .PRECIOUS
, make
никогда (в настоящее время) рекурсивно не удаляет каталоги, поэтому он не будет удалять непустые каталоги независимо от этого параметра.