【发布时间】:2014-05-31 11:53:55
【问题描述】:
我在 C 项目中使用 doxygen 时遇到以下问题。我有许多没有记录的内部结构。因此它在我的 Doxyfile 中设置了EXTRACT_ALL=NO。不幸的是,doxygen 仍然会提取其中的一些。这是一个最小的工作示例。假设以下头文件:
#ifndef HASHTABLE_H
# define HASHTABLE_H
#ifdef __cplusplus
extern "C" {
#endif
typedef void* object;
typedef char *(*object_getname)( object obj);
typedef void (*object_free)( object obj);
typedef mess_int_t (*object_hash)( char *name, mess_int_t size);
typedef struct {
hashtable_entry *next;
object *obj;
} hashtable_entry;
typedef struct {
object_getname name;
object_free freigabe;
object_hash hash;
mess_int_t size;
hashtable_entry **hashtable;
} hashtable_t;
typedef hashtable_t * hashtable;
#ifdef __cplusplus
}
#endif
#endif
以及在 Doxyfile 中设置的以下选项:
EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO
EXTRACT_PACKAGE = NO
EXTRACT_STATIC = NO
EXTRACT_LOCAL_CLASSES = NO
EXTRACT_LOCAL_METHODS = NO
EXTRACT_ANON_NSPACES = NO
但在生成数据结构列表中列出了两个结构。在其他文件中以相同方式定义的其他一些未记录的结构没有列出,正如我在EXTRACT_ALL=NO 的描述中所期望的那样。为什么 doxygen 提取一些而另一些不提取?
整个 doxyfile 可在:http://pastebin.com/J7c9BbvW
我正在使用 doxygen 1.8.5
【问题讨论】:
-
我试图用 1.8.5 重现您的问题,将代码写入文件 aa.c 和标准 Doxyfile 并按照指示设置所有 EXTRACT_...,但无法在 HTML 输出中重现它我只看到一个空的主页。你能分享更多信息吗?
-
我在那里上传了整个 doxyfile:pastebin.com/J7c9BbvW 对我来说这两个结构都可见。有趣的是,似乎只列出了 *.h 文件中的结构。 *.c 文件中的内部元素不会出现在文档中。
-
即使是使用
doxygen -g生成的新 Doxyfile 也会给我同样的结果。 -
我这边的问题是我把代码放在了h文件的c文件中。
-
要实现你想要的,我认为,你必须设置:HIDE_UNDOC_MEMBERS = YES 和 HIDE_UNDOC_CLASSES = YES
标签: doxygen