如何管理具有多个库的Doxygen项目?

时间:2010-05-25 20:01:27

标签: doxygen

我正在开发一个使用多个库的项目,在这样的结构中设置:

/ SRC
/库/ libOne
/库/ libTwo

我想生成一个Doxygen页面,它涵盖了我的所有代码以及库。只需在根部指向Doxygen即可。但是,我希望将doxygen输出分组,以便我可以清楚地看到每个类/文件属于哪个库。但是,由于这些库不是由我编写的,我不想更改它们来添加\ addtogroup注释。

我不介意生成的文档是否为库的子文件(例如,如果它们不包含doxy兼容的注释),我仍然希望它们包含在内,这样我就可以查看调用图,并快速浏览类等

如何在不更改库源的情况下将每个库代码分组到模块中?

感谢

1 个答案:

答案 0 :(得分:2)

您应该将所有必要的文档放在外部文件中。我不知道如何做到这一点,但我试图建立一个像你的最小环境,它运作良好。只是为了记录我在Doxygen网站上抓取示例代码的东西:

test1.h:

#define MAX(a,b) (((a)>(b))?(a):(b))
typedef unsigned int UINT32;
int errno;
int open(const char *,int);
int close(int);
size_t write(int,const char *, size_t);
int read(int,char *,size_t);

并编写了完全没用的test2.h(只是为了拥有两个不同的文件......):

void itdoesnothing();

这是很好的部分。我做了一个外部标题只是为了记录上面的内容,称为test_doc.h(再次,只是在Doxygen网站上使用了这个例子):

/*! \addtogroup everything The main group
    This group contains everything.
    @{
*/

/*! \file test.h
    \brief A Documented file.

    Details.
*/

/*! \def MAX(a,b)
    \brief A macro that returns the maximum of \a a and \a b.
    Details.
*/

/*! \var typedef unsigned int UINT32
    \brief A type definition for a .
    Details.
*/

/*! \addtogroup err Error handling
Error handling related stuff
@{
*/

/*! \var int errno
    \brief Contains the last error code.
    \warning Not thread safe!
*/

/*! @} */

/*! \addtogroup fdrelated File description related
    File descriptor related stuff.
    @{  
*/  

/*! \fn int open(const char *pathname,int flags)
    \brief Opens a file descriptor.

    \param pathname The name of the descriptor.
    \param flags Opening flags.
*/

/*! \fn int close(int fd)
    \brief Closes the file descriptor \a fd.

    \param fd The descriptor to close.
*/

这成功记录了Doxygen的两个文件。这样,您也可以按照手册中的说明对文件,命名空间等进行分组:

  

组的成员可以是文件,名称空间,类,函数,变量,枚举,typedef和定义,也可以是其他组。

因此,请尝试阅读http://www.doxygen.nl/grouping.html,看看我上面提到的事情可以做些什么。祝你好运!