[CMake] Need help with GLOB expression

Robert Dailey rcdailey at gmail.com
Sun Mar 29 17:10:23 EDT 2009


Looks like another feature request on Mantis to me :)

On Sun, Mar 29, 2009 at 3:39 PM, James Bigler <jamesbigler at gmail.com> wrote:

> Ah, yes.  I also was getting globbing expressions and regular
> expressions mixed up.
>
> From the docs (and experimentation), it looks like CMake only supports
> *, ?, and [], but not {} which would be required to do what we want:
>
> file(GLOB_RECURSE sources "*.{h,cpp}")
>
> James
>
> On Sun, Mar 29, 2009 at 2:21 AM, Carlson Daniel
> <daniel.c.carlson at gmail.com> wrote:
> > Ok, I thought that Cmake supported the standard regular expression used
> by
> > most GNU projects. The |-sign is an or-operator so the standard regular
> > expression for this would be:
> >
> > ^.*\.(h|hpp|ipp)$
> >
> > but now I realize that global expression and regular expression is not
> the
> > same thing... Sorry for that!
> >
> > 2009/3/29 Robert Dailey <rcdailey at gmail.com>
> >>
> >> I would prefer it just work. For large directory hierarchies, running
> the
> >> glob twice is severely inefficient.
> >> Thanks for the link to the documentation. Can anyone figure out a way to
> >> glob for H, HPP, and IPP files in a single glob operation? Is it even
> >> possible? I'd be really disappointed it it wasn't.
> >>
> >> On Sat, Mar 28, 2009 at 11:14 PM, James Bigler <jamesbigler at gmail.com>
> >> wrote:
> >>>
> >>> The regular expression syntax is documented under the 'string' command
> >>> in the help files.  There's also a wiki entry:
> >>>
> >>>
> http://vtk.org/Wiki/CMake_FAQ#Which_regular_expressions_are_supported_by_CMake.3F
> >>>
> >>> I couldn't get file(GLOB_RECURSE sources "*.(h|cpp)") to work.  "*.h"
> >>> would catch all the h files, "*.cpp" would catch all the cpp files,
> >>> but the expression above didn't catch both.
> >>>
> >>> Robert, if the regular expression doesn't work for you, you could
> >>> always just run the command twice and concatenate the results:
> >>> file(GLOB_RECURSE h_files "*.h")
> >>> file(GLOB_RECURSE hpp_ipp_files "*.[hi]pp")
> >>> set(files "${h_files}" "${hpp_ipp_files}")
> >>>
> >>> James
> >>>
> >>> On Sat, Mar 28, 2009 at 6:09 PM, Robert Dailey <rcdailey at gmail.com>
> >>> wrote:
> >>> > Thank you.
> >>> > For future reference, is the glob syntax for CMake documented
> anywhere?
> >>> > If
> >>> > it is, I have not been able to find it. Thanks again!
> >>> >
> >>> > On Sat, Mar 28, 2009 at 4:51 PM, Carlson Daniel
> >>> > <daniel.c.carlson at gmail.com>
> >>> > wrote:
> >>> >>
> >>> >> try:
> >>> >>
> >>> >> *.(h|hpp|ipp)
> >>> >>
> >>> >> 2009/3/28 Robert Dailey <rcdailey at gmail.com>
> >>> >>>
> >>> >>> Can I get some help with this? Sorry to rush, but I'm a bit
> blocked.
> >>> >>> I
> >>> >>> know some of you may be tempted to ask my why I'm doing this and
> >>> >>> possibly
> >>> >>> even try to change my mind, but with all do respect, I don't plan
> to
> >>> >>> avoid
> >>> >>> globbing :)
> >>> >>>
> >>> >>> On Fri, Mar 27, 2009 at 7:07 PM, Robert Dailey <rcdailey at gmail.com
> >
> >>> >>> wrote:
> >>> >>>>
> >>> >>>> I need to create a glob expression (For file( GLOB_RECURSE ) )
> that
> >>> >>>> will
> >>> >>>> find files with the following extensions:
> >>> >>>> *.h
> >>> >>>> *.hpp
> >>> >>>> *.ipp
> >>> >>>> How can I format my glob expression to do this? I know for HPP and
> >>> >>>> IPP
> >>> >>>> files, my glob expression would be:
> >>> >>>> *.[hi]pp
> >>> >>>> However, this ignores all H files.
> >>> >>>
> >>> >>> _______________________________________________
> >>> >>> Powered by www.kitware.com
> >>> >>>
> >>> >>> Visit other Kitware open-source projects at
> >>> >>> http://www.kitware.com/opensource/opensource.html
> >>> >>>
> >>> >>> Please keep messages on-topic and check the CMake FAQ at:
> >>> >>> http://www.cmake.org/Wiki/CMake_FAQ
> >>> >>>
> >>> >>> Follow this link to subscribe/unsubscribe:
> >>> >>> http://www.cmake.org/mailman/listinfo/cmake
> >>> >>
> >>> >
> >>> >
> >>> > _______________________________________________
> >>> > Powered by www.kitware.com
> >>> >
> >>> > Visit other Kitware open-source projects at
> >>> > http://www.kitware.com/opensource/opensource.html
> >>> >
> >>> > Please keep messages on-topic and check the CMake FAQ at:
> >>> > http://www.cmake.org/Wiki/CMake_FAQ
> >>> >
> >>> > Follow this link to subscribe/unsubscribe:
> >>> > http://www.cmake.org/mailman/listinfo/cmake
> >>> >
> >>> _______________________________________________
> >>> Powered by www.kitware.com
> >>>
> >>> Visit other Kitware open-source projects at
> >>> http://www.kitware.com/opensource/opensource.html
> >>>
> >>> Please keep messages on-topic and check the CMake FAQ at:
> >>> http://www.cmake.org/Wiki/CMake_FAQ
> >>>
> >>> Follow this link to subscribe/unsubscribe:
> >>> http://www.cmake.org/mailman/listinfo/cmake
> >>
> >>
> >> _______________________________________________
> >> Powered by www.kitware.com
> >>
> >> Visit other Kitware open-source projects at
> >> http://www.kitware.com/opensource/opensource.html
> >>
> >> Please keep messages on-topic and check the CMake FAQ at:
> >> http://www.cmake.org/Wiki/CMake_FAQ
> >>
> >> Follow this link to subscribe/unsubscribe:
> >> http://www.cmake.org/mailman/listinfo/cmake
> >
> >
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090329/c02f4edc/attachment-0001.htm>


More information about the CMake mailing list