Hola como estan no entiendo aun mucho de los makefile, pero me gustaria saber como puedo unir todas las librerias y codigo fuente usadas en .out.
SALUDOS y disculpen mi idnorancia.
Un makeefile simple se compone de reglas. Las reglas tienen el siguiente formato:
target ... : prerequisites ...
recipe
Las partes componentes de una regla, y su significado, son:
- target es el nombre de un archivo o de una acción.
- prerequisite es un archivo necesario para crear target.
- recipe es una acción (o un conjunto de acciones) a ejecutar. Un recipe comienza con una tabulación y no con espacios.
Para tu objetivo puedes hacer lo siguiente:
a.out : foo.c bar.c defs.h objeto.o /dir/to/archive/archive.a -lsome_dynamic_lib
cc -lsome_dynamic_lib foo.c bar.c objeto.o /dir/to/archive/archive.a
* Si esta es la primera regla en el makefile, entonces será la que se ejecutará por defecto al ejecutar make.
Esta regla especifica que:
* Si no existe a.out, entonces ejecutar el recipe
* Si existe a.out, pero los prerequisites (foo.c bar.c defs.h objeto.o /dir/to/archive/archive.a -lsome_dynamic_lib) han cambiado su fecha de modificación, entonces ejecutar el recipe.
Mi recipe es un comando común de cc. Como no especifico el parámetro -o, entonces cc crea el ejecutable a.out.
Hay muchas más funcionalidades que pueden facilitar la tarea de escribir reglas (GNU Make brinda muchas más).
Manual de GNU Make:
https://www.gnu.org/software/make/manual/make.html
Saludos