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

Asier González 3asgonza en rigel.deusto.es
Lun Nov 23 14:04:06 CET 2009


Hice como me dijiste:

Make.sh:
-- INICIO --
#!/bin/bash
cd src && make
cd carpeta1 && make
cd ../carpeta2 && make
-- FIN --

Luego en los makefile correspondientes, puse los comandos adecuados y va 
de lujo ;) .

Una cosa, ¿donde podría profundizar más todo esto?.

Un Saludo.

Egoitz Aurrekoetxea Aurre escribió:
> 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
>>     
>
> _______________________________________________
> 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