Doxygen不记录main.cpp中的主要功能

时间:2012-08-20 16:13:31

标签: c++ doxygen main

我有一个main.cpp,它包含一个struct,一些全局常量和一个main函数。

我运行了doxygen,我在输出index.html中获得的唯一文档是我的struct。

我希望doxygen将index.html文件记录到我的main()中。我做错了什么?

    /// Definition of Pi
    const auto Pi = 3.141592653589793238462643383279502884197169399;

    /// \struct myStruc
    /// \brief myStruc description
    ///
    struct myStruc
    {
         /// Comments inside myStruc
    };

    /// \file

    /// \brief  Main function
    /// \param  argc An integer argument count of the command line arguments
    /// \param  argv An argument vector of the command line arguments
    /// \return an integer 0 upon exit success
    int main(int argc, char** argv)
    {
        /// Comments I would like to be documented in as well
        return 0;
    }

4 个答案:

答案 0 :(得分:21)

这是因为您正在记录一个全局对象,默认情况下,doxygen不会记录。来自doxygen manual(强调我的):

  

要记录C ++类的成员,还必须记录该类本身。名称空间也是如此。 要记录全局C函数,typedef,enum或预处理器定义,您必须首先记录包含它的文件(通常这将是一个头文件,因为该文件包含导出到其他源的信息文件)。

     

让我们重复一遍,因为它经常被忽略:来记录全局对象(函数,typedef,枚举,宏等),你必须记录定义它们的文件。换句话说,必须至少有一个

/*! \file */ 
     

/** @file */ 
     

此文件中的行。

因此,请尝试将以上两行中的一行添加到main.cpp文件中。

答案 1 :(得分:2)

确保HIDE_IN_BODY_DOCS设置为NO并使用以下内容:

/// \file

/// \brief  Main function
/// \param  argc An integer argument count of the command line arguments
/// \param  argv An argument vector of the command line arguments
/// \return an integer 0 upon exit success
int main(int argc, char** argv)
{
  /// Comments I would like to be documented in as well
  return 0;
}

答案 2 :(得分:1)

对我来说,我必须确保我有这套:

SHOW_FILES = YES

所有全局功能都将显示在每个文件的“文件”选项卡中。此外,如果您在代码顶部定义了@file或\文件,则会有所帮助。

答案 3 :(得分:0)

从“其他地方的文档”部分的在线手册: http://www.doxygen.nl/manual/docblocks.html#specialblock

“Doxygen允许您将文档块放在几乎任何位置(异常位于函数体内或在普通C样式注释块内)。”

这是有道理的,因为通常不需要功能如何工作(其实现)的细节。我相信doxygen的目的是帮助编写容易搜索的文档,以便编码人员能够找到事物的位置并查看他们做了什么(以及传递给它的参数,返回的内容等)以学习如何使用它们,但不是它实际如何实施。这需要实际查看函数源(在doxygen生成的文件中也可用)。另外,如果您注意到,所有示例(我认为)都会在头文件中显示文档,这些文档缺少任何实现,这使我相信文档是针对头文件的,但是该工具可以让您灵活地放入头文件源文件也是。

无论如何,这是我的看法。有人有不同的想法吗?