[ILUG] Wildcards in makefile
Conor Daly
conor.daly_ilug at cod.homelinux.org
Tue Nov 28 09:30:11 GMT 2006
On Tue, Nov 28, 2006 at 04:53:30AM +0100 or so it is rumoured hereabouts,
Brian Foster thought:
> | Date: Mon, 27 Nov 2006 16:34:13 +0000
> | From: Conor Daly <conor.daly_ilug at cod.homelinux.org>
> |
> |[... since ] $(MANDIR)/man3/ will contain
> | manpages from other programs / libs, I cannot use:
> |
> | rm -f $(MANDIR)/man3/*; \
> |
> | for the uninstall. Is there a form of
> |
> | for FILE in ../man3/*; do rm -f $(MANDIR)/man3/$FILE; done
> |
> | that I can use in a makefile to accomplish this?
>
> yes. that, modified to be (1) correct,
> and (2) take into account make(1) syntax.
>
> the correctness issue is yer FILE variable
> is of the form ../man3/foo.3 so the rm(1)
> is removing <mandir>/man3/../man3/foo.3
> which will usually, but not always, work.
> it may fail if <mandir>/man3 is a symlink.
Yep, that was for example. (and to prompt yis to tell me how to do the
basename bit without having to ask explicitely thus showing up my level of
knowledge of makefiles... )
> hence, something like either of the following
> should work (neither tested!):
>
> for FILE in ../man3/*; do \
> rm -f $(MANDIR)/man3/$$(basename "$$FILE"); \
> done
This one is now tested and working. Thanks to all who replied.
Conor
--
Conor Daly <conor.daly at cod.homelinux.org>
-----BEGIN GEEK CODE BLOCK-----
Version: 3.1
GCS/G/S/O d+(-) s:+ a+ C++(+) UL++++ US++ P>++ L+++>++++ E--- W++ !N
PS+ PE Y+ PGP? tv(-) b+++(+) G e+++(*) h-- r+++ z++++
------END GEEK CODE BLOCK------
http://www.geekcode.com/ http://www.ebb.org/ungeek/
More information about the ILUG
mailing list