PAYATHON 2026

Doxygen 如何递归扫描项目根目录和 .build 目录?

数据阿明

可以在 INPUT 中同时写明项目根目录和 .build,并设置 RECURSIVE = YES。如果原来的 INPUT 为空,只追加 .build 不会保留默认扫描当前目录的行为。

同时配置两个输入目录

如果 INPUTDIR 是指向项目根目录的环境变量,可以在 doxygen.cfg 中设置:

INPUT = "$(INPUTDIR)" "$(INPUTDIR)/.build"
RECURSIVE = YES

运行 Doxygen 的进程需要能够读取 INPUTDIR。Doxygen 使用 $(ENV_VARIABLE_NAME) 展开环境变量,路径含空格时应保留引号。配置语法说明

如果直接从项目根目录运行 Doxygen,也可以使用:

INPUT = . ./.build
RECURSIVE = YES

然后执行:

doxygen doxygen.cfg

. 指运行命令时的当前目录。INPUT 可以列出多个目录,RECURSIVE = YES 用于继续搜索子目录。官方入门指南

为什么追加后只看到 .build 的警告

Doxygen 在 INPUT 为空时会搜索当前目录,但当前目录并不是输入列表中已有的一项。如果原配置是:

INPUT =

再添加:

INPUT += $(INPUTDIR)\.build

有效输入列表就只包含 .build,不会自动补上项目根目录。如果原来的 INPUT 确实为空,这可以解释题述现象。INPUT 配置说明

如果原来已经明确列出了其他输入目录,还需要检查完整配置,不能仅凭警告范围认定这些目录已被移除。原问题没有提供 Doxygen 版本,也不能据此断言所有版本都以相同方式处理点号目录。

仍然漏文件时检查什么

Doxygen 会结合输入路径、文件匹配规则和排除规则决定处理哪些文件。官方 FAQ

  • 检查 EXCLUDE 和 EXCLUDE_PATTERNS,确认没有排除 .build 或目标文件。
  • 检查 FILE_PATTERNS。如果已经自定义匹配规则,应确保包含 *.dox;需要追加时可使用 FILE_PATTERNS += *.dox,同时保留其他所需扩展名。
  • 确认生成文件在 Doxygen 启动前已经存在,并且输入路径实际指向预期目录。

验证时可以临时设置 QUIET = NO,查看运行输出中的扫描和解析信息。没有警告并不等于文件没有被处理。QUIET 配置说明

备注:内容仅供参考。