> On 27 September 2007 15:01, Eli Zaretskii wrote:
>
> >> From: "Dave Korn" <dave.korn artimi.com>
> >> Date: Thu, 27 Sep 2007 13:25:57 +0100
> >> Cc:
> >>
> >>> Suppose I have a root directory, whose
subdirectories could also
> >>> subdirectories, etc. I want to wildcard
all the .cc in the root
> >>> directory, which shall give me all the
path of all the .cc files.
> >>> Would you please let me know how to do
it?
[snip]
> (Well, you could actually get horribly tricky with
recursive functions adding
> successive instances of '*/' to the front of a string
that start of as '.cc'
> and using $(wildcard) on that, but it's probably not
worth the trouble).
I use this function. Even without the $(info) it probably
requires 3.81.
# logical not
not = $(if $(strip $(1)),,t)
# find-files-matching-extension:
# $(1)=subdir of $(CURDIR) to begin search
# $(2)=extension patterns
# $(3)=private recursive state variable (don't set)
find-files-matching-extension =
$(strip
$(if $(call not,$(3)),
$(eval .thisdir := $(CURDIR)/$(1))
,
$(eval .thisdir := $(1))
)
$(eval .thesefiles := $(wildcard $(.thisdir)/*))
$(foreach .thisfile,$(.thesefiles),
$(eval .subdir := $(wildcard $(.thisfile)/*))
$(if $(.subdir),
$(call
find-files-matching-extension,$(.thisfile),$(2),t)
,
$(filter $(2),$(.thisfile))
)
)
)
$(info $(call find-files-matching-extension,.,%.cc))
Enjoy
Ken
_______________________________________________
Help-make mailing list
Help-make gnu.org
http:
//lists.gnu.org/mailman/listinfo/help-make
|