Я начинающий, 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 лет, внезапно потерпели неудачу, потому что кто-то решил перейти на все современное с проверенной и испытанной системой.