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
-> includeVemos 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.