J'ai vu un modèle courant lors de l'installation d'un package c/c ++ à partir des sources sous Linux (Ubuntu 16.04):
Je comprends make
et make install
, et je suppose que configure
crée un Makefile basé sur les préférences de l'utilisateur, mais je ne vois pas pourquoi autogen.sh
est nécessaire.
Quelqu'un sait-il à quoi cela sert?
Les marches:
Le autogen.sh
script génère le script configure
(à partir de configure.ac
, en utilisant autoconf) et tous les fichiers dont il a besoin (comme la création de Makefile.in
de Makefile.am
en utilisant automake). Cela nécessite que les outils automatiques soient installés sur votre système et doivent être exécutés lors de l'extraction du projet à partir du contrôle de code source (si configure
n'est pas archivé). Les personnes qui téléchargent des archives tar source peuvent généralement ignorer cette étape, car la sortie de cette étape est incluse dans les archives tar source.
Remarque Ceci est généralement équivalent à autoreconf --install
. S'il n'y a pas autogen.sh
fichier, puis exécutez simplement autoreconf --install
au lieu. Si vous avez hérité d'un projet avec un autogen.sh
, pensez à le supprimer si vous pouvez utiliser autoreconf --install
.
Le script configure
génère Makefile
et les autres fichiers nécessaires à la construction. Généralement Makefile.in
est utilisé comme modèle pour générer Makefile
(et config.h.in
générer config.h
). Ce processus se produit en utilisant uniquement des outils standard installés sur votre système, comme sed et awk, et ne nécessite pas l'installation d'outils automatiques.
La commande make
construit le logiciel.
Le make install
la commande l'installe.
Celles-ci sont divisées en différentes étapes car elles sont souvent exécutées à des moments différents. Le autogen.sh
l'étape est traditionnellement exécutée par les personnes qui développent le logiciel, car elles sont censées installer autoconf sur leurs systèmes et apporter des modifications à configure.ac
. Les utilisateurs finaux ne devraient pas avoir d'autotools installés.
Ces attentes ont un peu changé maintenant que les utilisateurs finaux sont plus susceptibles de retirer un contrôle source d'un projet plutôt que de télécharger des versions sources.
Cela s'applique uniquement aux programmes/bibliothèques, qui sont créés à l'aide de la chaîne de création des outils automatiques. Il génère les fichiers, qui sont configurés par le script configure
. Le script de configuration remplit alors .in
fichiers et génère Makefile
s à partir de Makefile.am
modèles. Qui peut enfin être utilisé pour compiler, lier et installer le programme/bibliothèque.
Il devient lentement obsolète avec le passage aux packages multi-plateformes. CMake et des chaînes d'outils plus modernes sont à la pointe de la technologie.