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

如何在Qt中递归添加源文件及指定子目录下的所有文件?

在Qt项目中递归添加源文件的方法

没问题,我来给你梳理几种实用的方法,帮你摆脱手动逐个写路径的麻烦!

方法一:用qmake递归通配符(最简单)

从Qt 5.11及以后的版本,qmake支持**作为递归通配符,能直接匹配指定目录下所有层级子目录里的目标文件。针对你的目录结构,只需要在.pro文件里写:

SOURCES += src/**/*.cpp

这样一行代码就能替代你之前写的所有路径,自动把src、src/app、src/app/foo、src/ui、src/common这些目录下的所有.cpp文件都添加到SOURCES里。

方法二:兼容旧版本Qt的自定义递归函数

如果你的Qt版本比较老(不支持**通配符),可以用qmake的内置函数实现递归遍历。在.pro文件里添加以下代码:

# 定义一个递归获取源文件的函数
defineReplace(recursiveGetSources) {
    # 第二个参数true表示递归遍历子目录
    cppFiles = $$files($$1/*.cpp, true)
    return($$cppFiles)
}

# 调用函数,把src目录下所有递归找到的cpp文件加入SOURCES
SOURCES += $$recursiveGetSources(src)

额外注意事项

  • 排除不需要的文件/目录:如果有某些子目录或文件不想被包含,可以用EXCLUDE_FILES来过滤,比如:
    EXCLUDE_FILES += src/test/*.cpp src/temp/**/*.cpp
    
  • 更新文件后要重新运行qmake:当你新增或删除源文件后,Qt Creator不会自动检测到变化,需要右键项目 → 选择「Run qmake」,再重新编译。
  • 如果用CMake构建Qt项目:如果你的项目是用CMake而不是qmake,递归添加的写法是file(GLOB_RECURSE SOURCES "src/**/*.cpp"),不过这种方式在CMake里有一些争议,更推荐用target_sources配合手动添加关键目录,但这是另一个话题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:25:33