Autoconf y automake

Autoconf y automake son dos herramientas muy útiles a la hora de desarrollar tu propio software. El propósito de estas dos herramientas es crear los Makefile necesarios para que tu programa compile.

Instalación

La forma de instalar estos softwares es la usual

# apt-get install autoconf automake

Creación de archivos necesarios

Para que el programa logre su cometido, básicamente debemos crear dos archivos: configure.in y Makefile.am. Veamos la creación de éstos mediante un ejemplo.

Imaginemos que estamos desarrollando el programa ejemplo, el cual tiene asociado un árbol de directorios como el siguiente:

-> Ejemplo
  -> src
  -> include

En el subdirectorio src se encontrarán todas las fuentes del programa y en el directorio include todas los headers. Luego, en el directorio Ejemplo tendríamos que crear dos archivos

./configure.in

AC_INIT(src/ejemplo.cc)
AM_INIT_AUTOMAKE(ejemplo,0.1)
AC_PROG_CXX(g++)
AC_OUTPUT(Makefile  src/Makefile)

En este paso fijamos cosas muy importantes, como por ejemplo el compilador, la versión de nuestro software y los Makefile que saldrán como salida de estos programas.

./Makefile.am

SUBDIRS = src

Esto nos dará la posibilidad de crear un Makefile en el subdirectorio src. Así mismo, en el subdirectorio src debemos crear otro archivo Makefile.am, con la siguiente información

src/Makefile.am

ejemplo_SOURCES = ap.cc azar.cc  bank.cc conf.cc genetic_op.cc energias.cc ejemplo.cc inparamfile.cc limite.cc lbfgs.cc
ejemplo_LDADD = -lm 

en este caso, vemos que tenemos más de una clase y/o programa asociado a nuestro programa de ejemplo. Además, podemos fijar más variables de compilación, como variables para compilar con distintas bibliotecas.

Creación de Makefile

Sugiero crear un script en bash con las siguientes instrucciones

!#/bin/bash
aclocal
autoconf
automake -a
export CXXFLAGS="-O3 -march=athlon64"
./configure

la línea de export es opcional, pero nos permite fijar variables que pueden ser importantes, como se ve en este ejemplo. Así, obtendremos todos los archivos Makefile necesarios para compilar nuestro programa. Cada vez que se hagan cambios importantes en la estructura del programa, como adición de clases, se deben correr estos comandos. Este paso agregará más subdirectorios a nuestro sencillo árbol, quedando más o menos de la siguiente manera

-> Ejemplo
     aclocal.m4
     authors
     AUTHORS
  -> autom4te.cache
  -> bin
     ChangeLog
     config.log
     config.status
     configure
     configure.in
     COPYING
     depcomp
  -> doc
  -> include
     INSTALL
     install-sh
     Makefile.am
     news
     NEWS
     pa
     readme
     README
  -> src
  -> include

Vemos que el árbol de directorios aumentó considerablemente, y que podemos instalar nuestro programa en nuestro sistema para que cualquier usuario lo pueda usar. Ahora estamos listos para compilar nuestro software, corremos el comando

make

y vemos como la magia comienza.

Más información

http://www.gnu.org/software/autoconf/

http://www.gnu.org/software/automake/

http://zeth.ciencias.uchile.cl/~mramirez/wiki/toolsmanual.pdf Manual base de esta wiki.

Autoconf (última edición 2007-09-21 04:49:50 efectuada por MaxRamirez)