Diese beiden Dateien werden hauptsächlich in Open Source-Projekten angezeigt.
Wofür sind sie und wie arbeiten sie?
Makefile.am
ist eine vom Programmierer definierte Datei und wird von verwendet automake
, um die Makefile.in
Datei zu generieren (die .am
steht für ein uto m ake). Das configure
Skript, das normalerweise in Quell-Tarballs angezeigt wird, verwendet das Makefile.in
, um ein zu generierenMakefile
.
Das configure
Skript selbst wird aus einer vom Programmierer definierten Datei mit dem Namen entweder configure.ac
oder configure.in
(veraltet) generiert . Ich bevorzuge .ac
(für ein uto c onf), da es es von den generierten Makefile.in
Dateien unterscheidet und auf diese Weise Regeln haben kann, wie z. B. make dist-clean
welche ausgeführt werden rm -f *.in
. Da es sich um eine generierte Datei handelt, wird sie normalerweise nicht in einem Revisionssystem wie Git, SVN, Mercurial oder CVS gespeichert, sondern in der.ac
gespeichert Datei.
Lesen Sie mehr über GNU Autotools . Lesen Sie mehr über make
und Makefile
zuerst, dann lernen automake
, autoconf
, libtool
etc.
.in
?.in
Erweiterung bedeutet, dass es sich um eine Eingabe fürconfigure
die Massage handelt und nicht um eine endgültige Datei, die verwendet werden sollte (zmake
. B. mit ). Wenn Sie neugierig sind, warum dies "lächerlich" kompliziert erscheint, lesen Sie: stackoverflow.com/a/26832773/939557 Heutzutage, da GitHub usw. zu einem gemeinsamen Vertriebskanal wird, brechen einige der Annahmen von autoconf zusammen: Menschen erhalten die Quelle direkt aus dem Quellcode-Steuerungs-Tool, anstatt einen von Betreuern erstellten Quellverteilungs-Tarball zu verwenden.Einfaches Beispiel
Schamlos angepasst von: http://www.gnu.org/software/automake/manual/html_node/Creating-amhello.html und getestet unter Ubuntu 14.04 Automake 1.14.1.
Makefile.am
README.md
configure.ac
src / Makefile.am
src / main.c
Verwendungszweck
Dies gibt aus:
Anmerkungen
autoreconf --install
generiert mehrere Vorlagendateien, die von Git verfolgt werden sollen, einschließlichMakefile.in
. Es muss nur beim ersten Mal ausgeführt werden.make install
installiert:/usr/local/bin
README.md
zu/usr/local/share/doc/automake_hello_world
Auf GitHub können Sie es ausprobieren.
quelle
DEVELOPER läuft
autoconf
undautomake
:1) autoconf - erstellt shippable configure Skript
(die das Installationsprogramm wird später ausgeführt werden, um das machen Makefile )
2) auto - erstellt shippable Makefile.in Datendatei
(die configure später lesen , um das machen Makefile )
ERRICHTER läuft
configure
,make
undsudo make install
:EINGANGS- / AUSGANGSKARTE
Die folgende Notation lautet ungefähr: Eingänge -> Programme -> Ausgänge
DEVELOPER führt diese aus:
configure.ac -> autoconf -> configure (script) --- (*. ac = a uto c onf)
configure.in -> autoconf -> configure (script) --- (
configure.in
abgeschrieben. Verwenden Sie configure.ac)Makefile.am -> automake -> Makefile.in ----------- (*. Am = a uto m ake)
INSTALLER führt diese aus:
Makefile.in -> configure -> Makefile (*. In = in put file)
Makefile -> make ----------> (legt neue Software in Ihren Downloads oder im temporären Verzeichnis ab)
Makefile -> make install -> (legt neue Software in Systemverzeichnissen ab)
" autoconf ist ein erweiterbares Paket von M4-Makros, die Shell-Skripte zum automatischen Konfigurieren von Software-Quellcode-Paketen erstellen. Diese Skripte können die Pakete ohne manuellen Benutzereingriff an viele Arten von UNIX-ähnlichen Systemen anpassen. Autoconf erstellt ein Konfigurationsskript für ein Paket aus a Vorlagendatei, in der die Betriebssystemfunktionen aufgeführt sind, die das Paket in Form von M4-Makroaufrufen verwenden kann. "
" automake ist ein Tool zum automatischen Generieren von Makefile.in-Dateien, die den GNU-Codierungsstandards entsprechen. Automake erfordert die Verwendung von Autoconf."
Anleitungen:
Kostenlose Online-Tutorials:
Beispiel:
Der Haupt configure.ac die zum Erstellen von LibreOffice verwendet wird, besteht aus mehr als 12.000 Codezeilen (es befinden sich jedoch auch 57 andere configure.ac-Dateien in Unterordnern.)
Daraus meine generierte Konfiguration ergibt sich eine über 41.000 Codezeilen.
Und während Makefile.in und Makefile nur 493 Codezeilen sind. (Aber es gibt auch 768 weitere Makefile.ins in Unterordnern.)
quelle
Referenz :
Makefile.am - eine Benutzereingabedatei, die automatisch erstellt werden soll
configure.in - eine Benutzereingabedatei für die automatische Konfiguration
autoconf generiert configure aus configure.in
automake erstellt Makefile.in von Makefile.am
configure generiert Makefile aus Makefile.in
Zum Beispiel:
quelle