Aprendiendo a usar Make en nuestros proyectos

Makefiles son una forma sencilla de organizar la compilación de código. Este tutorial es un muy simple ejemplo de lo que se puede hacer con “make”, pero pretende ser una guía de principiantes para que pueda crear rápida y fácilmente sus propios archivos make para pequeños proyectos.

Vamos a tomar el código de ejemplo del articulo anterior. Lo que representaría un típico programa principal, algo de código funcional en un archivo separado, y un archivo de inclusión, respectivamente.

 

 

Normalmente, se compilará esta colección de código ejecutando el siguiente comando:

Este comando compila los dos códigos fuente involucrados en la creación del binario ejecutable “main” el parámetro -I. le dice al compilador que los archivos de inclusión .hpp los tiene que buscar en el directorio actual “.”

Por desgracia, este enfoque de la compilación tiene dos problemas. En primer lugar, si se pierde el comando de compilación o se cambia de computadora tiene que volver a escribir desde cero el comando. En segundo lugar, si sólo está haciendo cambios a un archivo .cpp, recompilar todos los archivos de código fuente cada vez que necesita recompilar demanda mucho tiempo y es poco eficiente. Ambos problemas se puede solucionar mediante el uso de un archivo “Makefile” con las instrucciones necesarias para la generación del ejecutable.

El makefile más simple que se podría crear sería algo como:

 

Si pones estas regla en un fichero llamado Makefile o makefile  y ejecutas “make” en la línea de comandos se ejecutará el comando de compilación como esta escrito en el makefile.

Se pone luego del nombre del ejecutable que se generara el símbolo : seguido de los archivos de codigo fuente que son necesarios para su creación y en la linea siguiente el comando de compilación necesario. Es importante destacar que antes de la llamada al compilador en la segunda linea hay un “Tab

Con el fin de ser un poco más eficiente, vamos crear un nuevo archivos Makefile:

 

Ahora hemos definido algunas constantes CC y CFLAGS. Resulta que estos son constantes especiales que se usan para decirle a make como queremos compilar. En particular  CC es el macro que especifica el compilador que vamos a usar usar, y CFLAGS es la lista de las banderas a pasar al comando de compilación. Al poner los archivos de objetos – main.o y suma.o – en la lista de dependencias y en la regla, make sabe que debe compilar primero las versiones .cpp individualmente, y luego construir el ejecutable.

El uso de esta forma de makefile es suficiente para la mayoría de proyectos de pequeña escala. Sin embargo, hay una cosa que falta: la dependencia de los archivos de inclusión. Si se va a realizar un cambio en suma.hpp, por ejemplo, que make no vuelva a compilar los archivos .cpp. Con el fin de solucionar este problema, tenemos que decirle make que todos los archivos .cpp dependen de ciertos archivos .hpp. Podemos hacer esto escribiendo una regla simple y agregarlo al archivo MAKE.

 

Esta adición creamo primero la macro DEPS, que es el conjunto de archivos .hpp de los que  los archivos .cpp dependen. Entonces definimos una regla que se aplica a todos los archivos que terminan en el sufijo .o. La regla dice que el archivo .o depende de la versión .cpp del archivo y los archivos .hpp incluidos en la macro DEPS. La regla luego dice que para generar el archivo .o, make necesita compilar el archivo .cpp usando el compilador definido en la macro CC. La bandera -c dice que genere el archivo de objeto, -o $@ dice para ponga la salida de la compilación en el archivo con el nombre en el lado izquierdo de los :,  $< es el primer elemento de la lista de dependencias, y  la macro CFLAGS se define como lo hicimos anteriormente.

Bueno este es un simple tutorial con ejemplos de como usar la herramienta Make. Aun así apenas nos asomamos a ver todo el potencial que nos ofrece.

 



« (Previous News)



Comments are Closed