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