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

Egoitz Aurrekoetxea Aurre egoitz en ramattack.net
Dom Nov 22 14:12:08 CET 2009


OK nos cuentas :)

salu2!!


El 22/11/2009, a las 11:48, Asier González escribió:

> 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
>> 
>> 
> 
> _______________________________________________
> 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