El makefile se usa en conjunto con la herramienta make para construir y crear programas. Uno de sus usos más básicos es el de compilar un programa en C.
En este post te mostraré un ejemplo muy simple de un makefile en C que simplemente va a compilar y ejecutar un programa.
Realmente será un ejemplo muy sencillo de makefile, pero que te servirá en caso de que sea obligatorio usar el makefile.
¿Para qué sirve el makefile?
Este archivo indica cómo construir un programa. De hecho, si usas Linux. seguramente alguna vez te tocó compilar e instalar un programa por ti mismo, en donde descargaste el código y ejecutaste make.
Pues bien, make es como un script que crea e instala el software. Pero no me creas mucho; porque make es mucho más que eso.
Cualquier proyecto decente y complejo usa make, ya que esta herramienta permite también compilar solo aquellos archivos que son necesarios y que han cambiado.
Por ejemplo, si tenemos un gran proyecto que requiere de varios archivos al compilar y nosotros modificamos solo uno, make se encargará de revisar las dependencias y compilar solo lo necesario. Y el makefile se encarga de indicar la receta de cómo construir ese software.
Para una referencia completa de make puedes usar Google o ver este tutorial. Yo te mostraré un ejemplo simple que apenas y muestra lo que puede hacer make.
Ejemplo de makefile
Sin más preámbulos te dejo un ejemplo de makefile:
CC=gcc
CFLAGS=-Wall
main: main.c
$(CC) $(CFLAGS) main.c -o main
./main
En la línea 1 indicamos el compilador. Vamos a usar gcc
. En la segunda línea indicamos banderas, la bandera Wall
reportará varios errores y nos dará advertencias de malas prácticas o posibles errores.
Después en la línea 3 indicamos que vamos a crear a main
, por lo que requerimos al archivo main.c
En la línea 4 compilamos ese archivo con el compilador pasándole las banderas, el nombre del archivo a compilar y el nombre de salida.
Ya en la línea 5 simplemente ejecutamos el programa. Así que básicamente estamos haciendo un script que compila y ejecuta nuestro programa.
Ahora resta ejecutar make
en el directorio en donde se encuentren tanto main.c
como makefile
y el programa se va a ejecutar. Te mostraré el código de C a continuación.
Uso de make con makefile
El código para este ejemplo queda así. Dejé una variable sin usar a propósito para que veas la bandera de advertencias.
/*
https://parzibyte.me/blog
*/
#include <stdio.h>
int main()
{
int variableSinUsar = 1;
printf("Hola mundo. Soy un programa en C");
return 0;
}
El propósito de este programa es mostrar un mensaje en pantalla. Ahora ejecuto make
y la salida es la de la imagen:
Nota: yo uso Windows, en donde también se puede instalar make.
Fíjate en que los comandos que coloqué en el archivo se ejecutan tal y como si los hubiera escrito, pero ahora es más simple ya que cada que quiera probar, solo debo escribir make
.
Anteriormente tendría que escribir gcc -o main main.c
y luego ejecutar main
, esto cada vez que hiciera un cambio.
Por otro lado, el compilador me advirtió de la variable no usada (la bandera sirve para eso y para muchas cosas más) pero incluso así lo compiló y ejecutó, ya que es una advertencia, no un error.
De este modo puedes usar make en tus proyectos de C. Como te dije, este es un ejemplo de makefile muy simple, pero que funciona y te da una pequeña introducción. Además, make sirve incluso con otros lenguajes de programación y miles de tareas más.
Te dejo el código de ejemplo y el makefile en mi GitHub. También puedes leer sobre C en mi blog.