Je suis nouveau sur autotools et je travaille sur un projet C. Je veux ajouter mon projet à un dépôt git. Je veux ajouter mon projet à un dépôt git. Quels sont les fichiers générés par les autotools que je dois suivre dans mon système de contrôle de version et ceux qui doivent être ignorés ?
Réponses
Trop de publicités?Vous ne devez pas conserver sous contrôle de version des fichiers qui ne sont pas édités à la main. Cela signifie que tout fichier généré doit être ignoré par le système de contrôle de version. En gros, je mets uniquement les éléments suivants sous contrôle de version :
configure.ac
Makefile.am
- les fichiers de documentation tels que
AUTHORS
,NEWS
etc. -
Makefile.am
dans les sous-répertoires
Pour répondre au point soulevé par Scharron d'avoir une version "prête à installer", certaines personnes incluent un script dans le répertoire racine du projet, appelé bootstrap
o autogen.sh
que vous n'exécutez qu'une seule fois lors du retrait d'une nouvelle copie. Vous pouvez voir un exemple dans un de mes projets aquí . Pour un projet plus simple, votre autogen.sh
ne doit vraiment consister qu'en une seule ligne :
autoreconf --install || exit 1
bien que certaines personnes préfèrent courir ./configure
automatiquement à la fin de autogen.sh
.
Pourquoi ne pas suivre tous les fichiers générés dans le contrôle de version ? Parce que leur contenu dépend de la machine sur laquelle vous construisez, de la version d'autotools avec laquelle vous les avez générés et de la phase de la lune. Chaque fois que l'un de ces éléments change, les fichiers autotools générés changent, et vous obtiendrez beaucoup de déchets dans vos commits.
De plus, toute personne qui extrait votre code du contrôle de version afin de le construire est censée disposer d'outils de développement adéquats. Vous n'avez donc pas à vous inquiéter de voir des personnes rencontrer des problèmes en raison de l'absence d'outils automatiques.
Ce que VonC dit à propos des projets C qui viennent avec une configure
pour générer le fichier Makefile
est vrai pour distributions de code source (le .tar.gz
que vous obtenez lorsque vous tapez make dist
) mais pas nécessairement pour les copies fraîchement extraites du contrôle de version.
Note : Je suis d'accord avec ptomato 'ss réponse et laissez cette réponse comme Wiki communautaire.
Cela a du sens pour les distributions de code source, mais votre projet n'en est peut-être pas un.
Pour les besoins du développement, la réponse de ptomato est plus logique.
Tous les projets C sont généralement accompagnés d'un fichier configure capable de générer le fichier Makefile utilisé pour la compilation.
Ainsi, lorsque vous considérez la chaîne autotool, je recommanderais de versionner tous les fichiers générés jusqu'au fichier configure, car ils sont normalement une opération de génération unique.
Cela signifie que toute personne possédant une copie de votre projet de version peut commencer immédiatement :
./configure
make
make install
Ainsi, bien qu'il soit généralement vrai que vous ne devriez pas versionner les fichiers générés, vous pourriez les stocker, surtout si l'autre lecteur de ce projet le peut :
- l'avantage de ne pas re-générer ces fichiers (pour un résultat identique)
- commencer immédiatement à configurer et à compiler.
En général, vous ne devriez pas garder de fichiers générés sur un dépôt (sinon vous verrez des changements et devrez les commiter/rétablir). Cependant, si vous voulez avoir une version "prête à installer" ajoutée (= étiquetée) à votre dépôt, je vous recommande de garder les fichiers configure et Makefile. Ce sont ceux qui sont nécessaires pour une installation, qui devrait fonctionner sans autotools.