Skip site navigation (1)Skip section navigation (2)
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>