[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