Estos dos archivos se ven principalmente en proyectos de código abierto.
¿Para qué son y cómo funcionan?
Makefile.ames un archivo definido por el programador y es utilizado por automakepara generar el Makefile.inarchivo ( .amsignifica un uto m ake). El configurescript que se ve típicamente en los tarballs de origen usará el Makefile.inpara generar a Makefile.
El configurescript en sí se genera a partir de un archivo definido por el programador llamado configure.aco configure.in(en desuso). Prefiero .ac(para un uto c onf) ya que lo diferencia de los Makefile.inarchivos generados y de esa manera puedo tener reglas como las make dist-cleanque se ejecutan rm -f *.in. Dado que es un archivo generado, normalmente no se almacena en un sistema de revisión como Git, SVN, Mercurial o CVS, sino que el .acarchivo sí lo estaría.
Lea más sobre GNU Autotools . Lea sobre makey Makefileen primer lugar, a continuación, aprender sobre automake, autoconf, libtool, etc.
.in?.inextensión significa que es una entrada paraconfiguremasajear, no un archivo final que debería usarse (por ejemplo, conmake). Si tiene curiosidad de por qué esto parece "ridículamente complicado", intente leer: stackoverflow.com/a/26832773/939557 En estos días con GitHub, etc., convirtiéndose en un canal de distribución común, algunos de los supuestos de autoconf se están desmoronando: la gente está obteniendo la fuente directamente desde la herramienta de control de código fuente, en lugar de usar un tarball de distribución de fuente creado por mantenedores.Ejemplo simple
Adaptado descaradamente de: http://www.gnu.org/software/automake/manual/html_node/Creating-amhello.html y probado en Ubuntu 14.04 Automake 1.14.1.
Makefile.am
README.md
configure.ac
src / Makefile.am
src / main.c
Uso
Esto produce:
Notas
autoreconf --installgenera varios archivos de plantilla que Git debe rastrear, incluidosMakefile.in. Solo necesita ejecutarse la primera vez.make installinstala:/usr/local/binREADME.mda/usr/local/share/doc/automake_hello_worldEn GitHub para que lo pruebes.
fuente
DESARROLLADOR corre
autoconfyautomake:1) autoconf : crea un script de configuración
que se puede enviar (que el instalador ejecutará más adelante para crear el Makefile )
2) automake : crea un archivo de datos Makefile.in
que se puede enviar (que configure luego se leerá para crear el Makefile )
Instalador se ejecuta
configure,makeysudo make install:MAPA DE ENTRADA / SALIDA
La notación a continuación es aproximadamente: entradas -> programas -> salidas
DESARROLLADOR ejecuta estos:
configure.ac -> autoconf -> configure (script) --- (*. ac = a uto c onf)
configure.in -> autoconf -> configure (script) --- (
configure.indepreciado. Use configure.ac)Makefile.am -> automake -> Makefile.in ----------- (*. Am = a uto m ake)
INSTALADOR ejecuta estos:
Makefile.in -> Configurar -> Makefile (. * En = en el archivo de venta)
Makefile -> make ----------> (coloca un nuevo software en sus descargas o directorio temporal)
Makefile -> make install -> (coloca un nuevo software en los directorios del sistema)
" autoconf es un paquete extensible de macros M4 que produce scripts de shell para configurar automáticamente paquetes de código fuente de software. Estos scripts pueden adaptar los paquetes a muchos tipos de sistemas similares a UNIX sin intervención manual del usuario. Autoconf crea un script de configuración para un paquete a partir de un archivo de plantilla que enumera las características del sistema operativo que el paquete puede usar, en forma de llamadas de macro M4 ".
" automake es una herramienta para generar automáticamente archivos Makefile.in que cumplen con los estándares de codificación GNU. Automake requiere el uso de Autoconf".
Manuales:
Tutoriales en línea gratuitos:
Ejemplo:
El archivo configure.ac principal utilizado para compilar LibreOffice tiene más de 12k líneas de código (pero también hay otros 57 archivos configure.ac en subcarpetas).
A partir de esto, mi configuración generada es de más de 41k líneas de código.
Y aunque Makefile.in y Makefile son solo 493 líneas de código. (Pero también hay 768 Makefile.in más en subcarpetas).
fuente
referencia :
Makefile.am: un archivo de entrada del usuario para automatizar
configure.in - un archivo de entrada de usuario para autoconf
autoconf genera configure desde configure.in
automake gererates Makefile.in de Makefile.am
configure genera Makefile desde Makefile.in
Por ej .:
fuente