【发布时间】:2015-03-06 14:01:44
【问题描述】:
我正在用 doxygen 记录 C 代码。为了使文档更具可读性,我想至少使用@defgroup 和@ingroup 将每个.c/.h 文件对中的代码添加到一个组中。在这些组中,我想使用 @name 块将一些定义组合在一起。
“文件”页面中的结果与我的预期非常接近:文件中记录的所有内容都列在那里,并且或多或少很好地分组。 另一方面,在“模块”页面中,仅列出了函数和变量,并且在第一个 @name 块之前的定义在“变量”下列出。缺少所有其他定义和枚举。 删除 @name 块会列出“变量”下的所有定义/类型定义/枚举。没有自己的宏或枚举部分,也没有在这些页面上进一步分组。
如何获取模块/组页面上列出的组中的所有定义和枚举,例如记录定义/功能等的文件页面?
我使用 doxygen 1.8.9.1 windows 二进制文件。
我的代码如下所示: .h 文件:
/** @file
* blabla
* @author bla
*/
/// @ingroup MY_GRP
/// @{
#define SOMEDEF1 1
/// @name Special defs
/// @{
#define SOMEDEF2 2
/// @}
enum someenum {
foo,
bar
};
extern int some_variables;
extern void some_proc(int baz);
/// @}
.c 文件如下所示:
/** @file
* blabla
* @author bla
*/
/** @defgroup MY_GRP A test group.
* Description
*/
/// @{
#include "my.h"
/// Important variable.
int some_variable;
/** Important proc
* Description
* @param baz need this
*/
void some_proc(int baz) {
// code
}
/// @}
我让 doxygen wizzard 生成一个 doxyfile 并且还生成了一个 DoxygenLayout.xml 文件。 在使用布局文件时,我发现组页面上的“定义”标签是空的(它们显然什么都不做),而变量部分中的“定义”是由“成员组”标签生成的......不要知道该怎么做。
非常感谢任何帮助。如果您需要 doxyfile 或其他任何内容,请告诉我。
【问题讨论】:
-
看看在文件级别使用 addtogroup 是否不能满足您的要求 stackoverflow.com/a/22461669/2344440
-
澄清一下,您是否也希望对未记录的实体进行分组?如果是这样,您需要进入配置文件或 GUI 中的高级配置并查找名为“提取未记录的实体”的项目。这需要启用。
-
addtogroup 而不是 ingroup 似乎可以解决问题 - 但不知道为什么。需要做更多的测试......而且不:如果 doxygen 将仅记录的实体分组,我会很高兴。到目前为止,它甚至都没有做到这一点。
-
嗯,差不多了!在头文件中声明并在 c 文件中实现的变量现在在组页面中列出了两次。如何摆脱双打?
-
如果你在头文件中记录一个声明,然后在 C 文件中记录一个定义,通常 doxygen 会尝试合并这两个文件的文档,因为它们都属于末尾的同一个对象日。当您说在标题中声明时,您的意思是使用外部?您确定要声明它们而不是意外定义它们吗?因为如果你有两个不同范围的定义,doxygen 会生成重复的文档。但是,如果您在包含该标头的 C 文件的标头和文件范围内定义某些内容,则应该会出现链接器错误。