# 3.3. Configure

El título de esta sección puede que le lleve a preguntarse ¿configure? ¿Qué he de configurar? Bueno, supongamos que ha escrito un programa que incluye un fichero Makefile . Le gustaría distribuirlo, pero el programa compilado sólo funciona en su sistema y en aquellos que sean compatibles con él. Para que funcione en otras plataformas distintas a la suya, tales como otros sistemas Unix o máquinas Alpha o RISC, hay que recompilar el programa. La manera más fácil sería copiar los ficheros fuente y ejecutar make en la otra máquina. Pero, ¿que pasa si la otra máquina utiliza otro compilador ? (o tiene algún otro problema al compilar el programa). Eso sin pensar en que los directorios de instalación del programa y su documentación pueden ser distintos. Ejemplo: los programas KDE puede que en su máquina se instalen en ``opt/kde/, pero en otra máquina puede que estén instalados en ``usr/local/kde/ o en otro sitio. En este caso, tendría que modificar el fichero Makefile cada vez, para asegurar la correcta compilación e instalación de su producto.

Afortunadamente, las herramientas GNU no sólo le proporcionan el mítico `make`, también incluyen otros dos paquetes: automake y autoconf . El prefijo "auto" de las utilidades puede inducirle a pensar que, por fin, algo relacionado con el diseño de la aplicación puede hacerse rápida y fácilmente. Pues ha acertado.

La tarea de Automake es, generalmente, crear un fichero `Makefile.in` desde un fichero llamado `Makefile.am` , que usted debe crear para su proyecto. Este fichero Makefile.am está compuesto por varias macros, que intentan reducir la complejidad de make y hacer que este fichero sea escrito más rápido y de forma más segura que el Makefile ..

Habiendo dicho esto, ¿quién se encarga de crear finalmente el fichero Makefile ? Aquí es donde aparece autoconf . Autoconf necesita varios ficheros de macros para funcionar: el fichero Makefile.in (creado por automake), y el fichero `configure.in`. Por un lado, el fichero Makefile.am (y por tanto el .in) contiene los macros que especifican que ficheros deben compilarse, que ficheros pertenecen al paquete, y cual será el nombre del fichero o biblioteca que se cree. Por el otro lado, el fichero configure.in contiene macros que configure utilizará para saber lo que tiene que buscar en el sistema. Por ejemplo el nombre del compilador , las bibliotecas necesarias para crear el binario, etc.

Por ejemplo, supongamos que desea crear una aplicación KDE . Tras escribir el código, querrá distribuir el programa entre la comunidad de usuarios, y cada usuario tendrá que compilar el binario. Lo que haría sería escribir un fichero configure.in que contenga las macros necesarias para crear una aplicación KDE. Estas macros se encargarían de comprobar que la biblioteca Qt está instalada, de buscar las cabeceras de Qt, de encontrar las bibliotecas y cabeceras de KDE, etc.

Resumen: Para crear una aplicación según el estándar GNU, que se pueda transportar a distintas máquinas y sistemas Unix, necesita hacer lo siguiente:

1. escribir el código de su proyecto

2. escribir un fichero Makefile.am para cada subsirectorio, incluyendo el directorio principal del proyecto

3. crear un fichero configure.in en el directorio principal del proyecto que contenga los requerimientos del sistema

4. ejecutar automake

5. ejecutar autoconf

Y el trabajo principal está hecho. Automake crea el fichero Makefile.in , autoconf procesa el fichero configure.in y crea un fichero de comandos (script) llamado `configure`. Cuando se ejecute ./`configure`, se realizarán todas las comprobaciones que fueran necesarias, creandose un(os) fichero(s) Makefile que permitirán la ejecución del make para la creación del binario.

Puede que todo esto parezca un montón de trabajo para crear una aplicación pequeña, además de que hay que aprender como escribir las macros correctas. Pero el hecho de que está permitiendo la compilación del programa, en prácticamente todos los sistemas Unix, valdrá la pena tarde o temprano. Además, sólo tiene que hacer esto una vez por cada proyecto, y si el número de ficheros del mismo se incrementa, tan sólo debe añadir los nuevos ficheros a las macros.

Ahora, ¿hasta que punto el KDevelop te ayuda con los anteriores aspectos de la programación? Pues hasta el punto de que no será necesario que sepa nada sobre macros y ficheros de comandos. Todos los detalles al respecto se ocultan tras la interfaz gráfica, que es la que se encarga de este trabajo. Las aplicaciones se crean por tanto de una forma muy agradable (con las herramientas GNU):

Crea la aplicación con el asistente de aplicaciones , únicamente tiene que elegir el tipo de aplicación que desea crear, ya sea una aplicación de terminal o un programa que utilice las bibliotecas Qt o KDE . Todo el trabajo se realiza automáticamente, y su fichero ya contendrá los ficheros Makefile creados con la ayuda de las herramientas GNU.

Y no hay nada más. Ya está preparado para extender el código de su proyecto, tal vez con nuevas clases , diálogos, traducciones o documentación, todo esto también automatizado. Tan sólo tiene que concentrarse en el verdadero trabajo del desarrollador, que es hacer que aplicación que desea crear sea util. En la mayoría de los casos, lo más probable es que no llegue a tocar los ficheros Makefile mientras trabaje con KDevelop.