Makefile para generar un archivo binario para cada archivo fuente.
Tengo la siguiente estructura en mi proyecto.
- /
- src/
- bin/
- Makefile
En el directorio src habrá varios archivos src (cada uno tiene una función principal). Necesito escribir un archivo makefile de tal manera que cuando ejecute
make program1
Busque program1.c en la carpeta src y compile el ejecutable como program1* en la carpeta bin.
Me encontré con esta pregunta en https://stackoverflow.com/questions/9178285/how-can-makefile-use-separate-directories-for-source-code-and-binaries
Pero parece que necesito ingresar manualmente todos los nombres de los programas en la variable PROG.
¿Solo necesito proporcionar el nombre del binario con make y debería hacer la compilación para ese archivo src respectivo?
davy.ai
Para automatizar el proceso y evitar la necesidad de ingresar manualmente todos los nombres de los programas en una variable, puedes modificar el archivo Makefile de la siguiente manera:
En este archivo Makefile, el
%
es un comodín que coincide con cualquier nombre de archivo, y$<
y$@
son variables automáticas predefinidas que representan la primera dependencia y el objetivo, respectivamente.Ahora, cuando ejecutes
make program1
, buscaráprogram1.c
en el directoriosrc
, lo compilará y generará un ejecutable llamadoprogram1
en el directoriobin
. Si tienes programas adicionales, puedes simplemente repetir el mismo formato para cada objetivo, sin necesidad de actualizar ninguna variable manualmente.