[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