You need to enable JavaScript to run this app. 如何使用Doxygen复制未导出C++类的文档且不生成该类文档
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Doxygen复制未导出C++类的文档且不生成该类文档

问题根因

你使用EXCLUDE_SYMBOLS = A配置排除A类时,Doxygen会在解析阶段直接忽略所有和A类相关的符号定义,包括A类内部的注释内容,所以\copydoc A::someAfunc()找不到对应的源注释,自然无法将内容复制到B类的方法文档中。

可行解决方案

方案1:使用\internal标签(无需调整Doxygen核心解析逻辑,推荐)

  • 给A类的类注释添加\internal标签,示例:
/*!
 * \internal
 * \brief A类的类注释
 */
class A {
// 原有内容不变
};
  • 修改Doxygen配置文件,设置INTERNAL_DOCS = NO
    这个方案下Doxygen会正常解析A类的所有内容(保证\copydoc能正常匹配到A类的方法注释),但最终输出的文档里不会展示任何A类的相关内容,完全符合你的需求。

方案2:使用标签文件(无需修改A类源码)

如果不方便改动A类的代码,可以用标签文件的方式实现:

  1. 先保留原配置(不添加EXCLUDE_SYMBOLS = A),在配置中新增GENERATE_TAGFILE = project.tag,运行一次Doxygen生成全量文档和标签文件
  2. 修改配置,新增EXCLUDE_SYMBOLS = A,同时新增TAGFILES = project.tag,再次运行Doxygen即可
    此时Doxygen会从已生成的标签文件中读取A类的注释信息供\copydoc使用,但不会生成A类的文档页面。

方案3:使用预过滤自动添加\internal标签(无需手动修改A类源码)

如果不想改源码也不想跑两次Doxygen,可以配置过滤器自动给A类注入\internal标签:

  • 在Doxygen配置中添加FILTER_PATTERNS = A.h="sed '1s/^/\\/*! \\internal *\\//'"(Linux环境下可直接使用sed命令)
  • 同步设置INTERNAL_DOCS = NO即可,效果和方案1完全一致。

以上方案均兼容你使用的Doxygen 1.9.1版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 03:57:00