c++ - 如何让 Doxygen 忽略继承关系?

标签 c++ inheritance doxygen

我试图让 Doxygen 在绘制协作图时忽略继承关系。

假设我的类定义如下所示:

class Derived : public Base
{
  int x;
  int y;
  int z;
}

现在,当我运行 Doxygen 时,我不想在生成的协作图中看到基类。

乍一看,最简洁的方法似乎是在我的 Doxyfile 中使用 EXCLUDE_SYMBOLS 指令。具体来说:

EXCLUDE_SYMBOLS = Base

但是,我发现这不起作用:Base 类仍然出现在我的 Derived 协作图中。我在 Doxygen 1.8.61.8.11 上都试过了,使用不同的 Base 通配符排列(Base*、*as* 等),行为相同。 Base 类总是出现在我的协作图中。

公平地说,我找到了 2 个解决方法,但它们都涉及将条件语句放入我的代码中。为了完整起见,我将在此处包括两者:

第一种解决方法:

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 在绘制协作图时忽略我的基类?

最佳答案

如果我没记错的话,EXCLUDE_SYMBOLS 会阻止 Doxygen 为排除的符号生成文档,但它不会隐藏它们。这意味着 Doxygen 不会为您的 Base 类生成文档,但它仍会将其作为 Derived 的基类提及,就像 Derived > 继承自外部库提供的类,库提供的类的名称将出现在协作图中。

关于c++ - 如何让 Doxygen 忽略继承关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37312241/

相关文章:

Java继承方法重写实例变量

c - 调用图中缺少宏函数

c++ - Doxygen 错误 : Failed to open temporary file/path/to/file/doxygen_objdb_3332. tmp

c++ - 模板参数类型取决于函数参数的模板函数

c++ - 将多维数组传递给 C++ 中的函数

java - 继承有界类型参数以限制类型

c++ - Doxygen 与 Qt 定义

c++ - Const 正确性、std 移动和智能指针

c++ - std::string 的 size() 和 length() 有什么不同吗

c# - 伪多重继承