Je suis un débutant make
et je me demande quand l'utiliser make clean
.
Un collègue m'a dit que les versions incrémentielles make
sont basées sur les horodatages des fichiers. Donc, si vous extrayez une ancienne version d'un fichier dans votre VCS, il aura un "ancien" horodatage et il sera marqué comme "pas besoin de recompiler ce fichier". Ensuite, ce fichier ne serait pas inclus dans la prochaine génération.
Selon ce même collègue, ce serait une raison de l'utiliser make clean
.
Quoi qu'il en soit, j'ai à peu près obtenu la réponse à la question "quand l'utiliser make clean
" à partir d'autres questions StackExchange, mais mon autre question est alors:
Pourquoi les builds incrémentiels utilisant
make
s'appuient-ils sur des horodatages de fichiers et non sur SHA-1 par exemple? Git, par exemple, montre que nous pouvons déterminer avec succès si un fichier a été modifié en utilisant le SHA-1.
Est-ce pour des problèmes de vitesse?
make
votre logiciel ne se cassera pas, mais make
fait plutôt un effort pour avoir une compatibilité descendante dans les nouvelles versions. Changer le comportement de base sans raison valable est à peu près le contraire. Et les dates montrent pourquoi il n'a pas été initialement conçu pour utiliser SHA-1, ou pourquoi il n'a pas été facile de le moderniser lorsqu'il est devenu disponible (il make
avait déjà des décennies à l'époque).
make
a été créé dans les années 70. SHA-1 a été créé dans les années 90. Git a été créé dans les années 00. La dernière chose que vous voulez, c'est que certaines versions obscures qui fonctionnaient depuis 30 ans échouent soudainement parce que quelqu'un a décidé de passer à la modernité avec un système éprouvé.