【问题标题】:CMake file GLOB_RECURSE with complex globs具有复杂 glob 的 CMake 文件 GLOB_RECURSE
【发布时间】:2021-11-13 17:42:03
【问题描述】:

我想使用file(GLOB_RECURSE...如下:

file(GLOB_RECURSE _tmp_files
     LIST_DIRECTORIES false
     "${mydir}/*.cpp|${mydir}/*.h")

这 - 以及诸如${mydir}/*{.cpp,.h} 之类的变体 - 会产生一个空列表。 但是,这可以按预期工作——在${mydir} 及其子目录中生成所有*.cpp 文件:

file(GLOB_RECURSE _tmp_files
     LIST_DIRECTORIES false
     "${mydir}/*.cpp")

那么,CMake 中的file( 功能确实支持“完整”通配符吗?特别是,如何使用file( 为模式{*.cpp,*.h} 通配?

【问题讨论】:

标签: cmake glob


【解决方案1】:

那么,CMake 中的文件(功能确实支持“完整”通配符吗?

是的。

您的表达方式与您期望的不同。 {..,..} 不是匹配 glob 中多个后缀的方法,{ , } 是按字面匹配的,在 glob 中没有特殊含义。 "${mydir}/*.cpp|${mydir}/*.h" 不是 glob 中的 OR - | 是字面匹配的,它在 glob 中没有特殊含义。见man 7 glob

如何使用 file(?

获取模式 {.cpp,.h}

写两次。

file(GLOB_RECURSE _tmp_files
     LIST_DIRECTORIES false
     ${mydir}/*.cpp
     ${mydir}/*.h
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    • 2020-08-10
    • 2016-05-26
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多