微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CMake 的 GLOB_RECURSE 似乎比我要求的递归更多

如何解决CMake 的 GLOB_RECURSE 似乎比我要求的递归更多

在我的项目中,我有一个名为 foo 的子目录,我想要一个 .cpp 下所有 foo 文件及其子目录的列表。所以 - 对我来说是 GLOB_RECURSE。现在,查看 CMake documentation,我看到语法是:

file(GLOB_RECURSE <variable> [FOLLOW_SYMLINKS]
     [LIST_DIRECTORIES true|false] [RELATIVE <path>] [CONfigURE_DEPENDS]
     [<globbing-expressions>...])

就我而言:

file(GLOB_RECURSE my_list "foo/" "*.cpp")

不幸的是,我得到的是我的项目中所有 .cpp 文件的路径 - 而不仅仅是在 foo/ 中。这是为什么?

解决方法

您误解了 <path> 占位符在语法中的作用。它仅在使用 RELATIVE 关键字时相关 - 而您没有使用 RELATIVE

因此,您实际提供的 GLOB_RECURSE两个 globbing 表达式。

奇怪的是,每个通配符表达式都被认为同时包含递归的根目录通配符模式。在您的情况下,这将是:

file(GLOB_RECURSE my_list "foo/*.cpp")

CMake 将拆分该字符串,以便在 .cpp 的所有子目录中查找 foo/ 文件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。