在doxygen中向多个组添加函数

时间:2016-02-03 21:18:30

标签: c++ doxygen

我正在尝试向多个组添加一个功能,但它似乎没有起作用。

我按照here

的说明操作

以下是我添加的评论:

/**
 * \defgroup version1 version 1
 */

/**
 * \defgroup version2 version 2
 */

/**
 * \ingroup version1 version2
 */
BOOL CLoginFormDlg::OnInitDialog(){}

该功能仅出现在version2模块中,而不出现在version1模块中。

如果我像这样写最后一个版本:

/**
 * \ingroup version2 version1
 */
BOOL CLoginFormDlg::OnInitDialog(){}

然后该函数仅出现在version1模块中,而不是出现在version2模块中。

我希望它们出现在两个模块中

1 个答案:

答案 0 :(得分:1)

您提供的link包含一个段落,解释了它无效的原因:

  

请注意,复合实体(如类,文件和命名空间)可以放在多个组中,但成员(如变量,函数,typedef和枚举)只能是一个组的成员(这个限制是为了避免如果成员未在其类,命名空间或文件的上下文中记录,但仅作为组的一部分可见,则模糊链接目标。)

考虑解决此问题的一种方法可能是为每个版本的代码创建不同的Doxygen项目。您将为每个版本创建一个Doxyfile。

在这种情况下,不是使用\ingroup命令在两组文档中尝试包含公共代码,而是排除每个不相关的代码使用由\if ... \endif\cond ... \endcond分隔的条件部分进行设置。

因此,在您的version1模块中,您将执行以下操作:

/**
 * \if _VERSION1_
 */

    <all code in your version1 module>

/**
 * \endif
 */

并在你的version2模块中:

/**
 * \if _VERSION2_
 */

    <all code in your version2 module>

/**
 * \endif
 */

需要出现在两个模块中的代码(例如BOOL CLoginFormDlg::OnInitDialog(){}函数)将没有此类条件命令,因此将包含在两组文档中。

在您的version1 Doxyfile中,添加以下行:

ENABLED_SECTIONS = _VERSION1_

和你的version2 Doxyfile:

ENABLED_SECTIONS = _VERSION2_

要将您的version1和version2文档集链接在一起,您可以使用Doxygen的tag file机制。

另见