70 votes

Ce n'est pas représentatif ./configurer le faire sous Linux?

Pourquoi est-il nécessaire que tout est spécifié dans un makefile ?

66voto

codaddict Points 154968

Généralement le script de configuration lors de l'exécution:

  • De vérifier certains détails au sujet de la machine sur lequel le logiciel va être installé. Ce script vérifie de nombreuses dépendances sur votre système. Pour le logiciel de travail correctement, il peut être exigeant beaucoup de choses existant sur votre machine déjà. Si l'une des exigences majeures sont manquants sur votre système, le script de configuration serait - exit et vous ne pouvez pas procéder à l'installation, jusqu'à ce que vous obtenez ces choses nécessaires.

  • Créer l' Makefile à être utilisé dans l'étape suivante.

34voto

Edwin Buck Points 33097

Il exécute un script qui produit, en général, les fichiers makefile et "configurer.h".

Le script est écrit dans le lanugage "m4", qui est un langage de macro. Le haut niveau de macros sont trouvés dans autoconf.ca ou (dans les anciens systèmes) autoconf.dans. Ces développez contenant de faibles niveau des macros qui à son tour s'étendre dans les tests qui créer de petits programmes ou des tâches pour vérifier quel type de système que vous avez.

Par exemple AC_CHECK_HEADER([myheader.h], ...) peut générer un petit programme C comme:

#include "myheader.h"
int main(int argc, char** argv) {
  return 0;
}

Si le programme compile, le test est considéré comme "de passage" dans le cas contraire, il "échoue". Le statut de ces vérifications est souvent reflété dans la config.h fichier. Sur le passage d'une case, vous pouvez trouver une ligne dans le fichier config.h qui ressemble à ceci:

#define HAVE_MYHEADER_H 1

alors que sur un test qui échoue, il pourrait ressembler

#define HAVE_MYHEADER_H 0

Lorsqu'il est configuré pour travailler avec autoconf dans AM_INIT_AUTOMAKE macro, le Makefile pouvez également référence les résultats des tests si la variable contenant le résultat du test est exporté. Donc, si une bibliothèque est située à quelques différents endroits typiques, ou à la syntaxe de "ce qui fonctionne" avec l'un de vos outils standard (comme le goudron, ar, etc) est différent, ou l'outil préféré n'est pas disponible, le fichier Makefile sera en mesure de toujours construire le projet correctement en utilisant les différents emplacements de la bibliothèque, les différents syntaxe de l'outil, ou un ensemble de différents outils.

Quand on parle avec un Autotools projet (configure / make / make install) le Makefile n'a vraiment pas de contenir tout ce qui est nécessaire pour construire le projet, il est généré à partir du fichier Makefile.dans le modèle spécifiquement pour correspondre à votre système lorsque vous tapez "configurer".

7voto

Donal Fellows Points 56559

Un script de configuration construit le Makefile à partir d'un modèle, les remplacer par des choses comme où vous souhaitez installer le code et ce que les définitions sont nécessaires pour le C, C++, Fortran, ...) compilateur qui est utilisé pour générer le programme. Théoriquement, il pourrait être fait en une seule étape, sauf qu'il y a tant de différentes configurations possibles qu'il est plus facile à faire dans les stades. (Par exemple, si la construction d'un grand programme avec un multi-core de la machine disponible, vous pouvez spécifier qu'un certain nombre de compilations en parallèle se passer, ce qui n'est pas le souci de savoir comment les choses sont configurés.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X