[CMake] Need help with GLOB expression

Robert Dailey rcdailey at gmail.com
Sun Mar 29 12:12:09 EDT 2009


Thanks. I'll give this a try.
This isn't very intuitive, though. I was hoping for something a little less
redundant. Because now I have to do this:

file( GLOB_RECURSE
sources "C:\foo\bar\source\*.h" "C:\foo\bar\source\*.ipp"
"C:\foo\bar\source\*.hpp"
)

It just amazes me that this area of CMake is such a mystery.

On Sun, Mar 29, 2009 at 5:18 AM, Martin Costabel <costabel at wanadoo.fr>wrote:

> 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.
>>         >>>
>>         >>> _______________________________________________
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090329/9938a087/attachment.htm>


More information about the CMake mailing list