Ces deux fichiers sont principalement visibles dans les projets open source.
À quoi servent-ils et comment fonctionnent-ils?
Makefile.am
est un fichier défini programmeur et est utilisé par automake
de générer le Makefile.in
fichier (les .am
stands pour un uto m AKE). Le configure
script généralement vu dans les archives tar source utilisera le Makefile.in
pour générer un fichier Makefile
.
Le configure
script lui-même est généré à partir d'un fichier défini par le programmeur nommé soit configure.ac
ou configure.in
(obsolète). Je préfère .ac
(pour un uto c onf) car il le différencie des Makefile.in
fichiers générés et de cette façon je peux avoir des règles comme celle make dist-clean
qui s'exécute rm -f *.in
. Puisqu'il s'agit d'un fichier généré, il n'est généralement pas stocké dans un système de révision tel que Git, SVN, Mercurial ou CVS, mais plutôt le .ac
fichier.
En savoir plus sur GNU Autotools . Lisez à propos make
et d' Makefile
abord, puis en savoir plus sur automake
, autoconf
, libtool
, etc.
.in
veut dire?.in
extension signifie qu'elle est entrée pourconfigure
masser, pas un fichier final qui devrait être utilisé (par exemple avecmake
). Si vous êtes curieux de savoir pourquoi cela semble "ridiculement" compliqué, essayez de lire: stackoverflow.com/a/26832773/939557 De nos jours, GitHub, etc. devenant un canal de distribution commun, certaines des hypothèses d'autoconf s'effondrent: les gens obtiennent la source directement depuis l'outil de contrôle du code source, plutôt que d'utiliser un tarball de distribution source créé par les mainteneurs.Exemple simple
Adapté sans vergogne de: http://www.gnu.org/software/automake/manual/html_node/Creating-amhello.html et testé sur Ubuntu 14.04 Automake 1.14.1.
Makefile.am
README.md
configure.ac
src / Makefile.am
src / main.c
Usage
Cela produit:
Remarques
autoreconf --install
génère plusieurs fichiers modèles qui devraient être suivis par Git, y comprisMakefile.in
. Il ne doit être exécuté que la première fois.make install
installe:/usr/local/bin
README.md
à/usr/local/share/doc/automake_hello_world
Sur GitHub pour que vous puissiez l'essayer.
la source
DEVELOPER s'exécute
autoconf
etautomake
:1) autoconf - crée un script de configuration livrable
(que le programme d'installation exécutera plus tard pour créer le Makefile )
2) automake - crée shippable Makefile.in fichier de données
(qui configure sera ensuite lu pour faire le Makefile )
INSTALLATEUR court
configure
,make
etsudo make install
:CARTE D'ENTRÉE / SORTIE
La notation ci-dessous est à peu près: entrées -> programmes -> sorties
LE DÉVELOPPEUR les exécute:
configure.ac -> autoconf -> configure (script) --- (*. ac = a uto c onf)
configure.in -> autoconf -> configure (script) --- (
configure.in
déprécié. Utilisez configure.ac)Makefile.am -> automake -> Makefile.in ----------- (*. Am = a uto m ake)
L'INSTALLATEUR les exécute:
Makefile.in -> configure -> Makefile (. * En = dans le fichier de vente)
Makefile -> make ----------> (met un nouveau logiciel dans vos téléchargements ou répertoire temporaire)
Makefile -> make install -> (met un nouveau logiciel dans les répertoires système)
" autoconf est un package extensible de macros M4 qui produit des scripts shell pour configurer automatiquement les packages de code source du logiciel. Ces scripts peuvent adapter les packages à de nombreux types de systèmes de type UNIX sans intervention manuelle de l'utilisateur. Autoconf crée un script de configuration pour un package à partir d'un fichier de modèle qui répertorie les fonctionnalités du système d'exploitation que le package peut utiliser, sous la forme d'appels de macro M4. "
" automake est un outil pour générer automatiquement des fichiers Makefile.in conformes aux normes de codage GNU. Automake nécessite l'utilisation d'Autoconf."
Manuels:
Tutoriels en ligne gratuits:
Exemple:
Le fichier configure.ac principal utilisé pour créer LibreOffice comprend plus de 12 000 lignes de code (mais il existe également 57 autres fichiers configure.ac dans les sous-dossiers.)
À partir de cela, ma configuration générée comprend plus de 41 000 lignes de code.
Et tandis que le Makefile.in et Makefile sont tous deux seulement 493 lignes de code. (Mais, il y a aussi 768 Makefile.in de plus dans les sous-dossiers.)
la source
référence :
Makefile.am - un fichier d'entrée utilisateur pour créer automatiquement
configure.in - un fichier d'entrée utilisateur à autoconf
autoconf génère configure depuis configure.in
automake gérère Makefile.in de Makefile.am
configure génère un Makefile à partir de Makefile.in
Par exemple:
la source