从Doxygen文档中排除一些类

21

我正在构建一个基于Qt的项目,并且目标文档中找到了许多Qt类。

我该如何告诉Doxygen禁用一些类的文档生成?例如Q.*?


我该如何告诉Doxygen禁用一些类的文档生成?例如Q.*?
3个回答

27

在假设你所拥有的东西类似于这样的情况下工作:(问题在这方面有点不清楚)

/**
 * Some documentation for class X
 */
class X: public osg::Drawable {
...
}

你的问题是想要包含类X的文档,但不想包含类osg::Drawable的文档。 正确的技术是使用EXCLUDE_SYMBOLS。例如,在上面的情况下使用:

EXCLUDE_SYMBOLS = osg::Drawable

如果你想更加严格一些,可以使用

EXCLUDE_SYMBOLS = osg::Drawable \
                  Drawable

通配符也是被允许的,因此这个也可行。

EXCLUDE_SYMBOLS = osg::*

我正在使用C#,并且想要排除一个名为“LogHandler”的类。但是我尝试了很多组合都不起作用,例如“LogHandler”、“LogHandler”、“Fullnamespace.LogHandler”、“Fullnamespace::LogHandler”等等。现在我放弃了,并采用了一种排除文件的解决方法。 - A Khudairy
我也在使用C#和Namespace::Subnamespace::*ClassSuffix。我观察了doxygen生成的输出,并注意到它以这种方式引用我的类,因此我使用了这种语法来进行排除。 - Jereme

12

如果 \internal 标记无效,您可以尝试使用\cond ... \endcond 标签来标记要从 Doxygen 中隐藏的代码部分。

编辑

如果您想要排除特定文件,则可以在 Doxyfile 配置文件中使用 EXCLUDE_PATTERNS 变量。


不,那不是我的问题。我的问题是我的函数使用了QString,而Doxygen试图查找关于QString的文档。我该如何防止Doxygen记录“我没有明确编写在我的项目中”的类? - elcuco

0

这不是最好的方法,但可以使用private标记文档的某些部分(类、成员等)。这将防止代码片段被包含在输出文档中。(我使用此方法隐藏复制/移动构造函数/运算符,以避免出现在API文档中。)

/*!
 * \brief This is included.
 */
class API
{
public:
    /*!
     * \brief So is this.
     */
    API() noexcept;
    /// \private
    ~API() noexcept; /* But this not, though technically public. */
private:
    int m_version; /* This is not either. */
}

需要注意的是,这是针对PHP的Doxygen扩展,根据文档,它们不应该被使用。

对于PHP文件,有许多额外的命令可以在类内部使用,使成员公开、私有或受保护,即使语言本身不支持此概念。

另一个选择是使用mouviciel提供的解决方案,但这至少需要两行。


虽然不是针对详细问题的正确答案,但对于问题标题的读者(比如我)可能会有所帮助。它也适用于类!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接