我有一个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;
}
答案 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生成的文件中也可用)。另外,如果您注意到,所有示例(我认为)都会在头文件中显示文档,这些文档缺少任何实现,这使我相信文档是针对头文件的,但是该工具可以让您灵活地放入头文件源文件也是。
无论如何,这是我的看法。有人有不同的想法吗?