Run*_*ble 7 c++ inheritance doxygen
我在绘制协作图时试图让Doxygen忽略继承关系.
假设我的类定义如下所示:
class Derived : public Base
{
int x;
int y;
int z;
}
Run Code Online (Sandbox Code Playgroud)
现在,当我运行Doxygen时,我不希望在生成的协作图中看到Base类.
乍一看,似乎最干净的方法是EXCLUDE_SYMBOLS在我的Doxyfile中使用该指令.特别:
EXCLUDE_SYMBOLS = Base
Run Code Online (Sandbox Code Playgroud)
但是,我发现这不起作用:Base类仍然显示在Derived的协作图中.我已经在Doxygen 1.8.6和1.8.11使用Base通配符的不同排列(Base*,*as*等)上尝试过这种行为. Base类始终显示在我的协作图中.
公平地说,我找到了2个解决方法,但它们都涉及将条件语句放入我的代码中.为了完整起见,我将在这里包括:
第一种解决方法:
class Derived :
#ifndef DOXYGEN_SHOULD_SKIP_THIS
public Base
#endif /* DOXYGEN_SHOULD_SKIP_THIS */
{
...
}
Run Code Online (Sandbox Code Playgroud)
然后确保在Doxyfile中设置以下两个指令:
PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS
ENABLE_PREPROCESSING = YES
Run Code Online (Sandbox Code Playgroud)
第二种解决方法:
class Derived :
/// @cond DOXYGEN_IGNORE
public Base
/// @endcond
{
...
}
Run Code Online (Sandbox Code Playgroud)
需要明确的是,这些变通办法确实使Doxygen忽略了继承关系,但我不希望不必要地污染我的代码库,特别是如果有更好/更清洁的方法来实现我的目标.
我的问题是 - 为什么EXCLUDE_SYMBOLS在绘制协作图时不会让Doxygen忽略我的Base类?
如果我没有记错的话,EXCLUDE_SYMBOLS会阻止 Doxygen 为排除的符号生成文档,但它不会隐藏它们。这意味着 Doxygen 不会为您的Base类生成文档,但它仍然会将其作为 的基类提及Derived,就像如果Derived从外部库提供的类继承一样,该库提供的类的名称将出现在协作图。