No se por donde anda eso del Makefile, porque estás cosas apenas las conozco, y aunque cuando trabajo con los STM32 y los Kinetis también anda por ahí lo del Makefile, para mi es algo transparente, no lo he tocado nunca a mano ni se exactamente que contiene. Sospecho que tiene todas las llamadas para la compilación y el enlazado, pero nunca me he preocupado por estudiarlo.
Pues merece la pena para proyectos relativamente grandes, es casi imprescindible.
El Makefile es un fichero con las órdenes para el comando
make de Unix/Linux. Se utiliza para automatizar muchos tipos de tareas, pero sobre todo las compilaciones.
En el Makefile pones los ficheros fuentes, los objetos y cómo compilarlos:
foo.o : foo.c defs.h # targets : prerequisites
cc -c -g foo.c # rules
Para conseguir el fichero foo.o es necesario tener foo.c y defs.h y compilarlos con cc.
Si están foo.c y defs.h y su fecha de última escritura es mayor que la de foo.o, entonces make entiende que tiene que compilar foo.c para producir foo.o
En caso contrario, ya está bien compilado y no hace nada (esto es así para la mayoría de los fuentes)
También puedes escribirlo para todos los fuentes a la vez:
CFLAGS = -flag1 -flag2 ...
COMPILER = gcc
%.o : %.c
$(COMPILER) -c $(CFLAGS) $< -o $@
$@ = cada uno de los ficheros *.o
$< = cada uno de los ficheros *.c
Ya sólo falta añadir una línea para ejecutar el linkado.
Así, al final no tienes que preocuparte de qué es lo que hay que hacer en cada momento. Tú sólo escribes "make" en la línea de comandos y el programa se encarga de saber qué fuentes hay que compilar y cuáles no y cuándo hay que realizar el enlazado (si alguno de los objetos es más nuevo que el ejecutable final)
Muchos GUIs lo que hacen es escribir el makefile y pasar el control de compilación a make. De esta forma si quieres puedes automatizar la tarea sin pinchar nada con el ratón.
Yo conocí Make con Turbo C hace ya mucho tiempo. Es muy útil sobre todo para proyectos grandes como el tuyo en el que recompilar todo te lleva mucho tiempo. De esta forma sólo recompilas lo necesario y es más rápido.
El Makefile es muy conciso, se tarda poco en escribirlo y en pocas líneas pones todo lo necesario para ejecutar la compilación.
Lo que me pregunto es ¿cómo has conseguido compilar tu proyecto sin make?
Un saludo.
P.D. Por lo que veo en tus pantallazos sí que estás utilizando make.
Lo dicho, guarda bien el Makefile y añade en comentarios la referencia de dónde descargar los compiladores y librerías necesarios.
Con que publiques eso es suficiente para ayudar a que cualquier otro o tú mismo volváis a compilar los fuentes dentro de un tiempo.