Ich bin ein Anfänger mit makeund ich frage mich, wann ich verwenden soll make clean.
Ein Kollege sagte mir, dass inkrementelle Builds mit makeauf den Zeitstempeln der Dateien basieren. Wenn Sie also eine alte Version einer Datei in Ihrem VCS auschecken, hat sie einen "alten" Zeitstempel und wird als "keine Notwendigkeit zum erneuten Kompilieren dieser Datei" markiert. Dann würde diese Datei nicht in den nächsten Build aufgenommen.
Laut demselben Kollegen wäre dies ein Grund zur Verwendung make clean.
Wie auch immer, ich habe die Antwort auf die Frage "Wann verwenden make clean?" Grob von anderen StackExchange-Fragen erhalten, aber meine andere Frage lautet dann:
Warum
makestützen sich inkrementelle Builds mithilfe von Dateizeitstempeln und nicht beispielsweise auf SHA-1? Git zeigt zum Beispiel, dass wir erfolgreich feststellen können, ob eine Datei mit dem SHA-1 geändert wurde.
Ist es für Geschwindigkeitsprobleme?
makewird Ihre Software nicht kaputt gehen, makebemüht sich jedoch eher um Abwärtskompatibilität in neuen Versionen. Das Ändern des Kernverhaltens ohne guten Grund ist so ziemlich das Gegenteil davon. Und die Daten zeigen, warum es ursprünglich nicht für die Verwendung von SHA-1 hergestellt wurde oder warum es nicht einfach war, es nachzurüsten, als es verfügbar wurde (war zu diesem makeZeitpunkt bereits Jahrzehnte alt).
makewurde in den 70er Jahren erstellt. SHA-1 wurde in den 90er Jahren erstellt. Git wurde in 00er erstellt. Das Letzte, was Sie wollen, ist, dass einige obskure Builds, die 30 Jahre lang funktionierten, plötzlich versagten, weil sich jemand entschied, mit einem bewährten System ganz modern zu werden.