Estos dos archivos se ven principalmente en proyectos de código abierto.
¿Para qué son y cómo funcionan?
Makefile.am
es un archivo definido por el programador y es utilizado por automake
para generar el Makefile.in
archivo ( .am
significa un uto m ake). El configure
script que se ve típicamente en los tarballs de origen usará el Makefile.in
para generar a Makefile
.
El configure
script en sí se genera a partir de un archivo definido por el programador llamado configure.ac
o configure.in
(en desuso). Prefiero .ac
(para un uto c onf) ya que lo diferencia de los Makefile.in
archivos generados y de esa manera puedo tener reglas como las make dist-clean
que 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 .ac
archivo sí lo estaría.
Lea más sobre GNU Autotools . Lea sobre make
y Makefile
en primer lugar, a continuación, aprender sobre automake
, autoconf
, libtool
, etc.
.in
?.in
extensión significa que es una entrada paraconfigure
masajear, 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 --install
genera varios archivos de plantilla que Git debe rastrear, incluidosMakefile.in
. Solo necesita ejecutarse la primera vez.make install
instala:/usr/local/bin
README.md
a/usr/local/share/doc/automake_hello_world
En GitHub para que lo pruebes.
fuente
DESARROLLADOR corre
autoconf
yautomake
: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
,make
ysudo 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.in
depreciado. 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