[CMake] Need help with GLOB expression

Martin Costabel costabel at wanadoo.fr
Sun Mar 29 06:18:42 EDT 2009


The following seems to work:

file(GLOB_RECURSE sources "*.h" "*.hpp" "*.ipp")

-- 
Martin

Carlson Daniel 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 <mailto: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 <mailto: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 <mailto: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 <mailto:daniel.c.carlson at gmail.com>>
>          > wrote:
>          >>
>          >> try:
>          >>
>          >> *.(h|hpp|ipp)
>          >>
>          >> 2009/3/28 Robert Dailey <rcdailey at gmail.com
>         <mailto: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 <mailto: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.
>          >>>
>          >>> _______________________________________________


More information about the CMake mailing list