Sono un principiante make
e mi chiedo quando utilizzare make clean
.
Un collega mi ha detto che le build incrementali si make
basano sui timestamp dei file. Quindi, se fai il checkout di una vecchia versione di un file nel tuo VCS, avrà un "vecchio" timestamp e sarà contrassegnato come "non è necessario ricompilare questo file". Quindi, quel file non verrebbe incluso nella prossima build.
Secondo quello stesso collega, sarebbe un motivo da usare make clean
.
Ad ogni modo, ho ottenuto approssimativamente la risposta alla domanda "quando usare make clean
" da altre domande StackExchange ma la mia altra domanda è:
Perché le build incrementali che utilizzano si
make
basano sui timestamp dei file e non su SHA-1 per esempio? Git, ad esempio, mostra che possiamo determinare con successo se un file è stato modificato usando SHA-1.
È per problemi di velocità?
make
tuo software, il tuo software non si romperà, ma make
fa piuttosto uno sforzo per avere la retrocompatibilità nelle nuove versioni. Cambiare il comportamento di base senza una buona ragione è praticamente l'opposto di quello. E le date mostrano perché non è stato originariamente creato per utilizzare SHA-1 o perché non è stato facile modificarlo quando è diventato disponibile ( make
ormai aveva decenni).
make
è stato creato negli anni '70. SHA-1 è stato creato negli anni '90. Git è stato creato negli anni 00. L'ultima cosa che vuoi è che alcune build oscure che funzionavano da 30 anni fallissero improvvisamente perché qualcuno ha deciso di diventare tutto moderno con un sistema collaudato.