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

Egoitz Aurrekoetxea Aurre egoitz en ramattack.net
Sab Nov 21 22:41:58 CET 2009


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



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