微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我在绘制协作图时试图让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类始终显示在我的协作图中.

公平地说,我找到了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忽略我的Base类?

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐