web-dev-qa-db-fra.com

Quel est le travail de autogen.sh lors de la construction d'un package c ++ sous Linux

J'ai vu un modèle courant lors de l'installation d'un package c/c ++ à partir des sources sous Linux (Ubuntu 16.04):

  1. ./autogen.sh
  2. ./configure
  3. make
  4. faire installer

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?

10
Elad Weiss

Les marches:

  1. 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.

  2. 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.

  3. La commande make construit le logiciel.

  4. 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.

14
Dietrich Epp

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 Makefiles à 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.

1
Kaveh Vahedipour