我遇到了Doxygen识别命名空间和模块的问题。我认为问题围绕着是否将\addtogroup
置于命名空间内或命名空间之外。
/*!
* \addtogroup Records
* @{
*/
//! Generic record interfaces and implementations
namespace Records
{
//! Describes the record interface
class Interface;
} // End namespace Records
/*! @} End of Doxygen Groups*/
//! Generic record interfaces and implementations
namespace Records
{
/*!
* \addtogroup Records
* @{
*/
//! Describes the record interface
class Interface;
/*! @} End of Doxygen Groups*/
} // End namespace Records
我希望namespace Records
显示在Doxygen 命名空间标签下,并间接显示在模块标签下。单击命名空间页面中的项目应生成包含Records::Interface
的页面。单击 Modules 选项卡中的项目也应生成包含Records::Interface
的页面。
在我的Doxygen文档中,模块中的命名空间标签中缺少项目,反之亦然,原因是由于这种困境导致我的不一致。
那么适当的方法,例1还是例2?
{Doxygen手册对此主题不清楚。}
Doxygen: \addtogroup
Doxygen: documenting namespaces
答案 0 :(得分:31)
我使用Doxygen和两个例子进行了实验,结果如下。 示例中的类名已重命名,以避免与Doxygen混淆。
/*!
* \addtogroup Records
* @{
*/
//! Generic record interfaces and implementations
namespace Records
{
//! Describes the record interface
class Interface;
} // End namespace Records
/*! @} End of Doxygen Groups*/
单击“模块”按钮(在主栏中) 单击窗口中的“记录”模块。
//! Generic record interfaces and implementations
namespace Fields
{
/*!
* \addtogroup Fields
* @{
*/
//! Describes the record interface
class Interface;
/*! @} End of Doxygen Groups*/
} // End namespace Fields
单击“模块”按钮(在主栏中) 单击窗口中的“记录”模块。
Doxygen \addtogroup
命令的位置具有不同的结果,具体取决于它是位于namespace
定义内还是位于外部。在命名空间外声明时,Doxygen Modules 选项卡将显示命名空间,如上面的示例1所示。当\addtogroup
命令放在命名空间内时,Doxygen Modules 选项卡将不显示命名空间,如上面的示例2所示。 如果您希望在Doxygen Modules 选项卡中列出您的命名空间,请在命名空间之外找到\addtogroup
命令。
答案 1 :(得分:3)
作为替代方案,您还可以在命名空间文档中使用\ingroup
Records
:
/**
* \defgroup Records Title for records module
* @brief Short doc of Records
*
* Long doc of Records.
*/
/**
* @brief Generic record interfaces and implementations
*
* \ingroup Records
*/
namespace Records {
/// Describes the record interface
class Interface;
} /* namespace Records */