[C con Clase] Makefile

Abel Camarillo acamari en the00z.org
Mie Abr 1 18:12:52 CEST 2009


On Wed, Apr 01, 2009 at 05:34:21PM +0200, Zakariae El-Abdelouarti wrote:
> Hola a todos,
> 
> Es una pregunta más sobre gestión de la compilación que sobre C/C++, pero
> creo que no está del todo fuera de lugar.
> 
> Tengo una estructura de ficheros bastante sencilla para gestionar una aplicación
> que estoy implementando. Para la gestión de la compilación estoy
> usando Makefile,
> pero no soy un experto en el tema y estoy teniendo problemas:
> 
> Al final del correo dejo el Makefile que he creado. El mensaje que me envía make
> es:
> 
> make: *** No rule to make target
> `pruebas/pru_utils_practica/pru_length.c', needed by `pru_length'.
> Stop.
> 
> Lo que entiendo que estoy haciendo es que make construya el objeto
> "pru_length", cuyas dependencias
> son pru_length.c   y utils_practica.o. Como pru_length.c es un archivo
> que será compilado en el campo de
> comandos del objeto. A su vez, utils_practica.o es un objeto que
> también tiene sus dependencias, que son
> utils_practica.c y utils_practica.h, las cuales son compiladas en la
> sección de comandos del objeto.
> 
> Os agradezco a todos vuestra atención y espero que me echéis una mano.
> 
> Un Saludo.
> 
> Zaka.
 
Yo hubiera hecho algo cómo esto:

 **************************************************************************************************
 INCLUDE_DIR			=./include
 CXX					=gcc -I$(INCLUDE)
 CFLAGS				=-Wall -I$(INCLUDE)
 SRC					=./src
 PRUEBAS				=./pruebas
 OBJ                 =./obj
 
 pru_length: $(PRUEBAS)/pru_utils_practica/pru_length.o utils_practica.o
 	$(CXX) $(CFLAGS) $(PRUEBAS)/pru_utils_practica/pru_length.o $(BIN)/utils_practica.o -o $(PRUEBAS)/pru_utils_practica/pru_length
 
 utils_practica.o: $(SRC)/utils_practica.c $(INCLUDE)/utils_practica.h
 	$(CXX) $(CFLAGS) $(SRC)/utils_practica.c -c -o $(OBJ)/utils_practica.o

  $(PRUEBAS)/pru_utils_practica/pru_length.o: $(PRUEBAS)/pru_utils_practica/pru_length.c

END

> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ

make usa reglas automáticas para la generación de esas reglas sufijo, te
recomiendo que leas un buen manual de make:

http://www.ten15.org/docs/make/#introduction

Y sólo por gusto te sugiero que trates de evitar las `extensiones' de
GNU  make.

Saludos.

PD: no he probado nada de eso, es muy temprano y hay trabajo, quizá en
la tarde le de otra leída y quizá responda un mensaje más útil.





Más información sobre la lista de distribución Cconclase