Loop/wildcard-like syntax for GNU make?
Parv
parv at pair.com
Wed Apr 18 02:47:03 UTC 2007
in message <26face530704171751r243ccf01sbb6d4572e8006a68 at mail.gmail.com>,
wrote Kelly Jones thusly...
Would you mind cutting the number of mailing lists? I think a|any
technical list would have been enough.
Anyway ...
> Here's a Makefile that converts 3 GIFs to JPGs in a given directory:
>
> 1.jpg: 1.gif
> /usr/local/bin/convert 1.gif 1.jpg
> 2.jpg: 2.gif
> /usr/local/bin/convert 2.gif 2.jpg
> 3.jpg: 3.gif
> /usr/local/bin/convert 3.gif 3.jpg
>
> How do I generalize this to apply to ALL the GIFs in a given
> directory? I tried:
>
> *.jpg: *.gif
> /usr/bin/local/bin/convert $1.gif $1.jpg
>
> but this obviously doesn't work (I didn't really expect it to). Neither does
>
> for $i (*.jpg) {
> $i.jpg: $i.gif
> /usr/bin/local/bin/convert $i.gif $i.jpg
> }
Following worked with both BSD & GNU make 3.81 (mind the
tabs|spaces)...
# Makefile
all:
@for i in 1 2 3;\
do \
echo "i: $$i";\
done
... so some version of body of a target below should work for you
(mind the spaces|tabs) ...
@cd "$$image_dir";\
for f in *.gif;\
do \
new=$( basename "$$f" '.gif' )'.jpg';\
convert "$$f" "$$new";\
done
- Parv
--
More information about the freebsd-questions
mailing list