如何让 Doxygen 忽略继承关系?
Posted
技术标签:
【中文标题】如何让 Doxygen 忽略继承关系?【英文标题】:How to get Doxygen to ignore inheritance relationship? 【发布时间】:2016-09-15 16:27:17 【问题描述】:我试图让 Doxygen 在绘制协作图时忽略继承关系。
假设我的类定义如下所示:
class Derived : public Base
int x;
int y;
int z;
现在,当我运行 Doxygen 时,我不想在生成的协作图中看到 Base 类。
乍一看,最简洁的方法似乎是在我的 Doxyfile 中使用 EXCLUDE_SYMBOLS
指令。具体来说:
EXCLUDE_SYMBOLS = Base
但是,我发现这不起作用:Base 类仍然显示在我的 Derived 协作图中。我已经在 Doxygen 1.8.6
和 1.8.11
上尝试过这个,并且使用不同的基本通配符排列(Base*、*as* 等),相同的行为。 Base 类总是出现在我的协作图中。
公平地说,我找到了两种解决方法,但它们都涉及将条件语句放入我的代码中。为了完整起见,我将两者都包括在这里:
第一种解决方法:
class Derived :
#ifndef DOXYGEN_SHOULD_SKIP_THIS
public Base
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
...
然后确保在 Doxyfile 中设置了以下两个指令:
PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS
ENABLE_PREPROCESSING = YES
第二种解决方法:
class Derived :
/// @cond DOXYGEN_IGNORE
public Base
/// @endcond
...
需要明确的是,这些变通办法确实使 Doxygen 忽略了继承关系,但我不希望不必要地污染我的代码库,特别是如果有更好/更清洁的方法来实现我的目标。
我的问题是——为什么EXCLUDE_SYMBOLS
在绘制协作图时不让 Doxygen 忽略我的 Base 类?
【问题讨论】:
【参考方案1】:如果我没记错的话,EXCLUDE_SYMBOLS
会阻止 Doxygen 为排除的符号生成文档,但它不会隐藏它们。这意味着 Doxygen 不会为您的 Base
类生成文档,但它仍会将其作为 Derived
的基类提及,就像 Derived
继承自外部库提供的类一样,库提供的类将出现在协作图中。
【讨论】:
以上是关于如何让 Doxygen 忽略继承关系?的主要内容,如果未能解决你的问题,请参考以下文章