[eside-ghost] Problemas para hacer un makefile ligeramente complejo

Asier González 3asgonza en rigel.deusto.es
Vie Nov 20 21:42:54 CET 2009


Veréis es que tengo un problema a la hora de generar un Makefile de unos 
fuentes en C++. Si fuera en la misma carpeta no habría problema porque 
si tuviera esta estructura:

/home/user/proyecto/
                               /main.cpp
                               /cabecera1.h
                               /cabecera2.h
                               /fuente1.cpp
                               /fuente2.cpp

Makefile:
-- INICIO --
CC=g++
DFLAGS=-c -ggdb -Wall
CFLAGS=-c -O3 -Wall
FLAGS=DFLAGS
OBJ=main.o fuente1.o fuente2.o

proyecto: $(OBJ)
    $(CC) $(OBJ) -o proyecto

main.o: main.c cabecera1.h
    $(CC) $(FLAGS) main.cpp cabecera1.h

fuente1.o: fuente1.c cabecera1.h cabecera2.h
    $(CC) $(FLAGS) fuente1.c cabecera1.h cabecera2.h

fuente2.o: fuente2.c cabecera2.h
    $(CC) $(FLAGS) fuente2.c cabecera2.h

clean:
    rm -f -r *~
    rm -f -r *.o

clean_all:
    rm -f -r *~
    rm -f -r *.o
    rm -f -r *~.c
    rm -f -r *~.h
    rm -f -r proyecto
-- FIN --

Aparentemente así salvo error, me funcionaria bien, si estuviera todo en 
un directorio.

Pero quiero estructurarlo de la siguiente forma:

/home/user/proyecto/
                               /bin/
                                    /proyecto
                                /obj/
                                     /main.o
                                     /fuente1.o
                                     /fuente2.o
                               /src/
                                    /main.cpp
                                    /carpeta1/
                                                  /cabecera1.h
                                                  /fuente1.cpp
                                    /carpeta2/
                                                  /cabecera2.h
                                                  /fuente2.cpp

Tendría que hacer un makefile bastante más complejo, este estaría 
situado en /home/user/proyecto/ , pero el problema es que no se ni por 
donde empezar, he estado mirando tutorial sobre make, pero solo lo hacen 
para un solo directorio, o son excesivamente complejos.

Haber si me podríais echar una manita, gracias.

Un Saludo.

PD: Espero que se vea bien como he estructurado los directorios.


Más información sobre la lista de distribución eside-ghost