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

如何在CMake的file(GLOB_RECURSE)命令中跳过符号链接?

CMake file(GLOB_RECURSE)过滤符号链接的实现方案

3.14及以上版本(推荐方案)

直接使用file(GLOB_RECURSE)内置的NO_SYMLINKS参数即可实现需求,该参数会自动将匹配结果中所有属于符号链接的文件剔除,仅保留普通文件。
示例用法:

file(GLOB_RECURSE RESULT_FILES
    NO_SYMLINKS
    LIST_DIRECTORIES false
    "src/*.c" # 此处替换为你需要的glob匹配规则
)

3.14以下版本兼容方案

如果使用的CMake版本低于3.14,没有内置NO_SYMLINKS参数,可以先全量获取匹配文件,再手动过滤符号链接:

# 先获取所有匹配的文件
file(GLOB_RECURSE ALL_MATCHED_FILES "src/*.c")
set(FILTERED_FILES "")
# 遍历过滤符号链接
foreach(CUR_FILE ${ALL_MATCHED_FILES})
    if(NOT IS_SYMLINK ${CUR_FILE})
        list(APPEND FILTERED_FILES ${CUR_FILE})
    endif()
endforeach()

注意:file(GLOB_RECURSE)默认不会跟随遍历符号链接指向的目录,如果需要遍历符号链接目录,还需要额外添加FOLLOW_SYMLINKS参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:09:01