Я начинающий, make
и мне интересно, когда использовать make clean
.
Один коллега сказал мне, что инкрементные сборки с make
использованием временных меток файлов. Таким образом, если вы извлекаете старую версию файла в вашей VCS, у нее будет «старая» временная метка, и она будет помечена как «нет необходимости перекомпилировать этот файл». Тогда этот файл не будет включен в следующую сборку.
По словам того же коллеги, это будет поводом для использования make clean
.
В любом случае, я примерно получил ответ на вопрос «когда использовать make clean
» из других вопросов StackExchange, но другой мой вопрос:
Почему инкрементные сборки используют
make
временные метки файлов, а не SHA-1, например? Git, например, показывает, что мы можем успешно определить, был ли файл изменен с использованием SHA-1.
Это из-за проблем со скоростью?
make
ПО, ваше программное обеспечение не сломается, но make
прилагает все усилия для обеспечения обратной совместимости в новых версиях. Изменение основного поведения без уважительной причины в значительной степени противоположно этому. И даты показывают, почему он изначально не был создан для использования SHA-1, или почему было нелегко дооснастить его, когда он стал доступен (к тому времени make
уже было десятилетия).
make
был создан в 70-х годах. SHA-1 был создан в 90-х годах. Git был создан в 00-х годах. Последнее, что вы хотите, - это чтобы некоторые неясные сборки, которые работали в течение 30 лет, внезапно потерпели неудачу, потому что кто-то решил перейти на все современное с проверенной и испытанной системой.