# GNU Automake

GNU Automake, també conegut com a Automake, és una eina de programació per automatitzar parts del procés de compilació. La Free Software Foundation manté Automake com un dels programes del Projecte GNU. Forma part del GNU build system. Està escrit en Perl i ha de ser utilitzat amb GNU Autoconf.
El programari genera automàticament fitxers Makefile.in a partir dels fitxers Makefile.am. Cada un dels fitxers Makefile.am conté, entre altres coses, definicions de variables útils per al programari a compilar, com opcions del compilador i de l'enllaçador, les dependències i les seves versions, etc. El fitxer Makefile.in generat és portable i compatible amb les convencions sobre Makefile del GNU Coding Standards.

## Procés

Automake té com a objectiu que el programador pugui crear un fitxer makefile amb llenguatge d'alt nivell en lloc de fer-ho manualment. En els casos més senzills n'hi ha prou amb:
* Una línia que declara el nom de l'aplicació a crear;
* Una llista dels fitxers amb el codi font;
* Una llista d'opcions de la línia d'ordres per donar-li al compilador;
* Una llista d'opcions de la línia d'ordres per passar a l'enllaçador (quines biblioteques son necessàries i en que directori es poden trobar).
D'aquesta informació, Automake genera un makefile que permet a l'usuari:
* Compilar el programa;
* Netejar (per exemple, treure els arxius que resulten de la recopilació);
* Instal·lar el programa en els directoris estàndards;
* Desinstal·lar el programa des d'on estava instal·lat;
* Crear un arxiu per la distribució del programa (anomenat generalment tarball);
* Provar l'autonomia del fitxer, en particular si el programa pot ser compilat en un directori diferent al del codi font.
Els makefiles resultants segueixen els GNU Coding Standards.
Automake també genera automàticament informació sobre les dependències, de manera que quan es modifica un fitxer de codi font, la següent invocació de l'ordre make sabrà quins fitxers de codi font cal recompilar. Si el compilador ho permet, Automake crearà un sistema dinàmic de dependències: cada vegada que es compila un fitxer de codi font, les dependències s'actualitzen. D'aquesta manera s'intenta evitar el problema d'alguns sistemes de control de dependències estàtics, on les dependències són detectades només una vegada quan el programador comença a treballar en el projecte. En aquest cas, si un arxiu de font té una dependència nova (p. ex., si el programador afegeix una nova directiva #include en un arxiu de codi font escrit en C), en aquest cas hi ha una discrepància entre les dependències reals i les que són utilitzades pel sistema de compilació. El programador llavors hauria de regenerar les dependències, però corre el risc d'oblidar fer-ho.
Automake també pot ajudar amb la compilació de les biblioteques generant automàticament els makefiles que invocaran a GNU Libtool. Per tant, el programador no ha de saber com cridar directament a Libtool, i el projecte es beneficia de l'ús d'una eina per crear biblioteques portables.

## Referències

* ↑ Automake - GNU Project Documentation
* ↑ Dependency Tracking in Automake, Automake Manual

## Vegeu també

* Make

## Bibliografia

* Vaughn, Gary V.; Elliston, Ben; Tromey, Tom; Taylor, Ian Lance. GNU Autoconf, Automake, and Libtool (en anglès). Sams Publishing, 6 octubre 2000. ISBN 1-57870-190-2.

## Enllaços externs

* GNU Automake - Lloc web oficial