You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake中file(GLOB_RECURSE如何匹配cpp、h等多种后缀的文件

CMake的file()命令的通配功能不支持Shell风格的{*.cpp,*.h}大括号扩展,也不支持|作为多规则分隔符,你尝试的这两种写法不符合CMake的通配语法,所以返回空列表是正常现象。

正确实现多后缀匹配的方法

file(GLOB_RECURSE)本身支持传入多个匹配模式,符合任意一个模式的文件都会被加入结果列表,你可以直接按如下方式编写:

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

如果需要匹配的后缀数量较多,可以先统一定义后缀列表再生成匹配规则,示例如下:

# 可根据需求自行增减匹配后缀
set(MATCH_SUFFIXES cpp h hpp cc cxx)
foreach(suffix ${MATCH_SUFFIXES})
    list(APPEND GLOB_PATTERNS "${mydir}/*.${suffix}")
endforeach()

file(GLOB_RECURSE _tmp_files
     LIST_DIRECTORIES false
     ${GLOB_PATTERNS}
)

注意:CMake官方不推荐使用GLOB_RECURSE收集项目源文件,如果你新增/删除了匹配目录下的文件,CMake不会自动感知到变更,必须手动重新执行CMake生成指令才会更新文件列表。

内容的提问来源于stack exchange,提问作者Ilonpilaaja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 23:45:03