On 9/20/07, personaje <[EMAIL PROTECTED]> wrote:
>
> entonces, si hago:
>
> make debug (compila con info de debug y salida en Debug/)
>
> make release (compila optimizando y salida en Release/)
>
> eso es lo que busco...
>

Tradicionalmente, para manejar subdirectorios se usan makefiles recursivos;
pones un makefile en cada directorio, y los makefiles padres invocan
recursivamente a make -C "subdir" en las producciones.
De esta forma podrias hacer que cada subdirectorio sepa como compilar para
tal o cual proposito. Make orientado a objetos!


por ejemplo;

en proyecto/makefile:
----------------
debug:
  $(MAKE) -C "debug/"
----------------


en proyecto/debug/makefile:
--------------
all: $(OBJS)
   $(CXX) $(flags_correspondientes) $<

%.o: ../%.c
   $(CXX) -c $< -o %.o
--------------


Esa ultima regla esta para reemplazar la regla implicita para los .o, que es
algo asi como %.o: %.c (y que asume que todo esta en el mismo directorio).
No se si podrias usar VPATH, hay que ver a donde van a parar los objetos.

... recien ahora vi esa ultima linea con las dependencias. A medida que
agregas detalles asi, tu makefile se complica bastante mas... Probablemente
haya funcionalidad de make para hasta el ultimo capricho, pero para eso
tenes que hacerte un artista de makefiles, y eso toma mucho tiempo que por
ahi preferirias usar mejor.
Te aconsejo que toleres un poco de rigidez en tu organizacion de proyecto,
en favor de un makefile lo mas simple posible.


Hablando de makefiles, en este foro [1] puse una distribucion con utilidades
de consola y algunos scripts que me fui haciendo con el tiempo. Las
utilidades estan escritas en C y usan un sistema de makefiles bastante
rebuscado, que me costo hacer funcionar pero que ahora me simplifica
bastante las cosas cuando quiero hacer una utilidad nueva.

[1] http://www.linuxarg.org/modules/ipboard/index.php?showtopic=297
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a