【发布时间】:2016-02-05 09:31:24
【问题描述】:
我正在尝试使用 Doxygen 记录我的一些代码。我有一个库,我称之为 Doxygen 组,以及单独的头文件中的许多类。许多构造函数在类页面上显示为公共成员函数,但它们的文档显示在组页面上,而不是在类页面的 Constructors && Destructors 部分中。有些不是;我还没有完全弄清楚模式。
这是失败的:
/**
* @addtogroup gr_espresso
* @{
*/
/**
* @file ToyTagger.hh
*/
...
namespace Espresso {
...
/**
* @class ToyTagger
* @brief Fake tagging algorithm
* @details ...
*
*/
class ToyTagger {
public:
/**
* @brief Simple constructor.
* @details ...
*/
ToyTagger(CalibrationMode _mode, const Distribution& _pdf, const Calibration* _smear_cal = nullptr);
...
}
}
/**
* @}
*/
为 ToyTagger 类生成以下文档:
上面以伪代码显示的构造函数列在公共成员函数下,但不在构造函数和析构函数文档下。相反,“更多信息”链接指向组 gr_espresso 的页面。对于另一个构造函数也是如此,对于三个成员函数之一也是如此:
我没有展示第二个构造函数或三个成员函数的代码,但是没有明显的区别。
另一方面,这是成功的:
/**
* @addtogroup gr_espresso
* @{
*/
/**
* @file StandardCalibration.hh
*/
...
namespace Espresso
{
...
class StandardCalibration : public Calibration {
public:
/**
* @brief Default constructor
* @details Simple constructor that creates a trivial calibration
* where \f$\omega(\eta) = \eta\f$
*/
StandardCalibration();
...
}
}
/**
* @}
*/
这会生成我期望的文档:
有人知道这里发生了什么吗?我是否做错了什么导致这种(显然)不可预测的行为?
【问题讨论】:
-
我看到的一个区别是,您在第二个示例中使用了默认构造函数,而在第一个示例中使用了专用构造函数。
-
@gmug 这是一个很好的观察。我将查看库中的其他构造函数,看看它们是否遵循相同的模式。这无法解释为什么返回 void 的两个成员函数记录在此页面上,而不是第一个,但也许这是一个单独的问题。
-
盲射:你的构造函数是
public:之后的第一个成员吗? -
鉴于你的电子邮件地址,我敢打赌你不能分享整个项目,你能提供一个minimal reproducible example吗?
-
在
ToyTagger.hh上运行 Doxygen 1.8.7(配置了 Doxywizard 默认设置,除了禁用 LaTeX 和图表)对我来说产生了正确的结果。构造函数在顶部的概述中列为“公共函数”,但在“构造函数和析构函数”下可了解详细信息。 “更多...”链接跳转到正确的位置,而不是组页面。你也可以在单个文件上运行 doxygen 吗?也许 ToyTagger.hh 中包含的任何文件都有一些损坏的 doxygen 代码? doxygen 生成过程中是否有任何警告?