Date: Tue, 17 Apr 2007 22:47:15 -0400 From: Parv <parv@pair.com> To: Kelly Jones <kelly.terry.jones@gmail.com> Cc: f-q <freebsd-questions@freebsd.org> Subject: Re: Loop/wildcard-like syntax for GNU make? Message-ID: <20070418024715.GA7211@holestein.holy.cow> In-Reply-To: <26face530704171751r243ccf01sbb6d4572e8006a68@mail.gmail.com> References: <26face530704171751r243ccf01sbb6d4572e8006a68@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
in message <26face530704171751r243ccf01sbb6d4572e8006a68@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 --
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070418024715.GA7211>