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

Asier González 3asgonza en rigel.deusto.es
Dom Nov 22 11:48:46 CET 2009


Muchas gracias ;) , en breve lo probare y te cuento haber si he tenido 
algún problema o algo.

Un Saludo.

Egoitz Aurrekoetxea Aurre escribió:
> Aupa Asier,
>
> Si, me refiero ese makefile te va bien si está todo en un directorio no?... pues dejas en el directorio /home/user/proyecto/ ese makefile... y después en el siguiente directorio metes otro makefile similar cambiando lo justo (porque entiendo que quieres hacer algo parecido en todos los directorios donde vayas a compilar)... entonces haces... un cd directorio te posicionas y lanzas el make... un ejemplillo : 
>
> #!/bin/sh
>
> cd /home/user/proyecto/ && make 
> cd /home/user/proyecto/directorio1 && make
>
> Si quieres que los objeto se muevan a otro directorio como obj.... 
> metes lo siguiente al makefile de ese directorio : 
>
> install :  
> cp *.o /dondesea
>
> entonces para ese nuevo directorio metes en el script : 
>
> cd /home/user/proyecto/directorio && make
> cd /home/user/proyecto/directorio && make install 
>
> (en realidad podrías hacer solo lo segundo y bastaría...)
>
> Y con esto te ahorras el hacer un solo Makefile para todo y para instalar tu aplicacion simplemente habría que hacer un ./make.sh y listo....
>
> Yo lo haría así o probaría esto si dices que hacer lo otro te resulta mas lio.
>
> Agures!!!
>
>
> El 21/11/2009, a las 13:36, Asier González escribió:
>
>   
>> ¿Podrías ponerme un ejemplo sencillo de esa forma?, yo la verdad es que 
>> no controlo mucho con la consola, ni creando script de bash.
>>
>> Un Saludo.
>>
>> Egoitz Aurrekoetxea Aurre escribió:
>>     
>>> Buenas,
>>>
>>> Los flags que usas no tienen nada del otro mundo así que si haces...  
>>> un make.sh que cambie de directorio y haga en cada uno un make y la  
>>> acción.. el clean o lo que sea? por ejemplo el make install que haga  
>>> el make en el sitio y después o con install o con cp los mueves a  
>>> obj??... me refiero yo lo haría simple.... si hacer el makefile es mas  
>>> costoso para que vaya a varios sitios... yo haría algo así... usa una  
>>> shell como sh que tiene cualquier sistema operativo y listo :)
>>>
>>> Salu2!
>>>
>>>
>>>
>>> El 20/11/2009, a las 21:42, Asier González escribió:
>>>
>>>
>>>       
>>>> 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.
>>>> _______________________________________________
>>>> eside-ghost mailing list
>>>> eside-ghost en listas.deusto.es
>>>> https://listas.deusto.es/mailman/listinfo/eside-ghost
>>>>
>>>>         
>>> _______________________________________________
>>> eside-ghost mailing list
>>> eside-ghost en listas.deusto.es
>>> https://listas.deusto.es/mailman/listinfo/eside-ghost
>>>
>>>
>>>       
>> _______________________________________________
>> eside-ghost mailing list
>> eside-ghost en listas.deusto.es
>> https://listas.deusto.es/mailman/listinfo/eside-ghost
>>     
>
> _______________________________________________
> eside-ghost mailing list
> eside-ghost en listas.deusto.es
> https://listas.deusto.es/mailman/listinfo/eside-ghost
>
>   



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