代码之家  ›  专栏  ›  技术社区  ›  bramp Madhur Ahuja

如何使用多个库管理一个doxygen项目?

  •  2
  • bramp Madhur Ahuja  · 技术社区  · 16 年前

    我正在开发一个使用多个库的项目,这些库的结构如下所示:

    SRC
    LIBS/LIOBE
    /LIBS/LIB2

    我想生成一个包含我所有代码和库的单独的doxygen页面。这很简单,只需将脱氧根指向根。但是,我希望对doxygen输出进行分组,以便清楚地看到每个类/文件属于哪个库。但是,由于库不是由我编写的,因此我不想将它们更改为添加\addtogroup注释。

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

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

    谢谢

    1 回复  |  直到 16 年前
        1
  •  2
  •   Scorchio    16 年前

    您应该将所有必要的文档放在外部文件中。我不知道如何做到这一点,但我试着建立一个像你这样的最小环境,而且效果很好。为了记录一些东西,我在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和defines,也可以是其他组。

    所以尝试阅读 http://www.doxygen.nl/grouping.html 也可以看看如何处理我上面提到的事情。祝你好运!