Make con dependencias opcionales

Alvaro Herrera alvherre en alvh.no-ip.org
Mar Jun 26 12:27:25 CLT 2007


Aldrin Gonzalo Martoq Ahumada escribió:

> Coloca un include a otro makefile,y que este tenga las opciones que
> quieras. Algo asi:
> 
> ---Makefile
> -include Makefile.local
> # defaults values
> OPC1?=defaultfoo
> OPC2?=defaultbar
> 
> all:
>        echo ${OPC1} ${OPC2}
> 
> ---Makefile.local
> OPC1=newfoo
> ---

Ajá!  Buena pista, finalmente di con una solución usando este truco.  El
detalle que faltaba era cómo hacer la dependencia, y cómo hacer que las
variables cambiaran dependiendo de la foto que estoy procesando :-)
Finalmente lo dejé así:

ALLNEFS = $(wildcard *.NEF)
ALLJPEGS = $(addprefix jpeg/,$(subst .NEF,.jpeg,$(ALLNEFS)))
ALLTIFFS = $(addprefix tiff/,$(subst .NEF,.tiff,$(ALLNEFS)))

all: $(ALLJPEGS)

tiffs: $(ALLTIFFS)

-include nef2jpeg.opts

OPT=-w

jpeg/%.jpeg: %.NEF
	dcraw -v -c -t 0 $(OPT) $< | \
		cjpeg -progressive -quality 85 -dct float -outfile $@.untagged
	exiftool -P -overwrite_original -TagsFromFile $< $@.untagged
	mv $@.untagged $@

tiff/%.tiff: %.NEF
	dcraw -v -c -t 0 -T $(OPT) $< > $@

Y ahora cuando quiero que una foto se procese con opciones diferentes,
las pongo en un archivo nef2jpeg.opts de la siguiente forma:

jpeg/DSC_0729.jpeg : OPT=-a
jpeg/DSC_0729.jpeg: nef2jpeg.opts


La primera linea define la variable localmente para ese target (6.10
Target-specific Variable Values) y la segunda agrega la dependencia para
que la foto se regenere si el archivo de opciones cambia.  Hay un
problema porque si cambio las opciones para una foto, se cambian todos
los archivos ... pero generalmente son pocas fotos a las que les tengo
que poner opciones, asi que no necesariamente es un problema.  Tambien
consegui que funcionara poniendo un archivo con opciones para cada foto;
estoy experimentando para ver cual forma me acomoda mas.

Tambien es fastidioso tener que definir las opciones dos veces, una vez
para jpeg y otra para tiff, pero casi nunca uso el tiff asi que no es
problema.


Muchas gracias por el tip.

-- 
Alvaro Herrera                               http://www.PlanetPostgreSQL.org/
"There is evil in the world. There are dark, awful things. Occasionally, we get
a glimpse of them. But there are dark corners; horrors almost impossible to
imagine... even in our worst nightmares." (Van Helsing, Dracula A.D. 1972)


Más información sobre la lista de distribución Linux