C 和 doxygen - 删除变量文档的重复项
C and doxygen - removing duplicates of variable documentation
我正在用 doxygen 记录我的 C 代码。为了更好的可读性,我将每个 .c/.h 文件对(有时还有更多文件)的文档与 defgroup
和 addtogroup
分组(参见 )。
文件页面看起来不错,但在 group/module 页面上,所有变量文档都加倍了。在头文件中声明(使用 extern)并在 .c 文件中(在摘要和描述部分)定义的每个变量都有 2 个条目。功能和其他一切都只列出一次...
如何删除 group/module 页上重复的变量文档?
我的源文件如下所示:
.h 文件:
/** @file
* blabla
* @author bla
*/
/// @addtogroup 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
}
/// @}
无法真正解决问题,但找到了解决方法:
我将 INPUT_FILTER
选项与 grep -Eve "extern"
(cygwin) 一起使用,以整理出所有带有 "extern" 函数或变量声明的行。
因为我只记录了实际的函数实现和变量定义,所以前面带有 "extern" 的所有内容都没有文档,可以为 doxygen 删除。
这确实也删除了 doxygen 输出中变量的所有重复条目。
而不是将 INPUT_FILTER
配置值与 sed
或 grep
命令一起使用(在 Linux 上工作正常,在 Windows 上这需要 Cygwin 或MSYS2,而且速度较慢...),我目前正在使用以下技巧:
- 设置
PREDEFINED = extern=//
- 设置
EXPAND_AS_DEFINED = extern
这样任何以 extern
开头的行都会被 C++ 注释禁用。
我正在用 doxygen 记录我的 C 代码。为了更好的可读性,我将每个 .c/.h 文件对(有时还有更多文件)的文档与 defgroup
和 addtogroup
分组(参见
如何删除 group/module 页上重复的变量文档?
我的源文件如下所示: .h 文件:
/** @file
* blabla
* @author bla
*/
/// @addtogroup 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
}
/// @}
无法真正解决问题,但找到了解决方法:
我将 INPUT_FILTER
选项与 grep -Eve "extern"
(cygwin) 一起使用,以整理出所有带有 "extern" 函数或变量声明的行。
因为我只记录了实际的函数实现和变量定义,所以前面带有 "extern" 的所有内容都没有文档,可以为 doxygen 删除。
这确实也删除了 doxygen 输出中变量的所有重复条目。
而不是将 INPUT_FILTER
配置值与 sed
或 grep
命令一起使用(在 Linux 上工作正常,在 Windows 上这需要 Cygwin 或MSYS2,而且速度较慢...),我目前正在使用以下技巧:
- 设置
PREDEFINED = extern=//
- 设置
EXPAND_AS_DEFINED = extern
这样任何以 extern
开头的行都会被 C++ 注释禁用。