Jestem początkującym make
i zastanawiam się, kiedy użyć make clean
.
Jeden kolega powiedział mi, że przyrostowe kompilacje make
oparte są na znacznikach czasowych plików. Tak więc, jeśli pobierzesz starą wersję pliku w VCS, będzie on miał „stary” znacznik czasu i będzie oznaczony jako „nie ma potrzeby ponownej kompilacji tego pliku”. Wtedy ten plik nie zostałby włączony do następnej kompilacji.
Według tego samego kolegi byłby to powód do korzystania make clean
.
Tak czy make clean
inaczej, z grubsza uzyskałem odpowiedź na pytanie „kiedy używać ” z innych pytań StackExchange, ale moje inne pytanie brzmi:
Dlaczego kompilacje przyrostowe przy użyciu
make
polegają na sygnaturach czasowych plików, a nie na przykład na SHA-1? Na przykład Git pokazuje, że możemy z powodzeniem ustalić, czy plik został zmodyfikowany za pomocą SHA-1.
Czy dotyczy to problemów z prędkością?
make
oprogramowania, oprogramowanie się nie zepsuje, ale make
raczej starasz się zachować kompatybilność wsteczną w nowych wersjach. Zmiana zachowania rdzenia bez uzasadnionego powodu jest wręcz przeciwna. A daty pokazują, dlaczego pierwotnie nie został stworzony do użycia SHA-1 lub dlaczego nie było łatwo go zmodernizować, gdy stał się dostępny ( make
miał wtedy już dekady).
make
powstał w latach 70-tych. SHA-1 powstał w latach 90-tych. Git powstał w latach 00-tych. Ostatnią rzeczą, jakiej pragniesz, jest to, że niektóre niejasne wersje działające przez 30 lat nagle zawiodą, ponieważ ktoś zdecydował się na nowoczesność dzięki wypróbowanemu i przetestowanemu systemowi.