Jestem początkującym makei zastanawiam się, kiedy użyć make clean.
Jeden kolega powiedział mi, że przyrostowe kompilacje makeoparte 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 cleaninaczej, 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
makepolegają 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ą?
makeoprogramowania, oprogramowanie się nie zepsuje, ale makeraczej 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 ( makemiał wtedy już dekady).
makepowstał 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.