【问题标题】:How to manage a Doxygen project with multiple libraries?如何管理具有多个库的 Doxygen 项目?
【发布时间】:2011-02-23 21:14:06
【问题描述】:

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

/src
/libs/libOne
/libs/libTwo

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

我不介意生成的文档是否低于库的标准(例如,如果它们不包含与 doxy 兼容的 cmets),我仍然希望包含它们,以便我可以查看调用图并快速浏览类等.

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

谢谢

【问题讨论】:

    标签: doxygen


    【解决方案1】:

    您应该将所有必要的文档放在外部文件中。我不知道该怎么做,但我尝试建立一个像你这样的最小环境并且效果很好。只是为了记录我在 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 的两个文件。这样您也可以对文件、命名空间等进行分组,如手册中所述:

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

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

    【讨论】:

    • 非常感谢您的回答。我会尽快尝试,如果可行,请接受您的回答。
    • 你是说你必须明确地将每个类/函数/等添加到一个组中吗?现有的代码库听起来很可怕……还是有捷径?就像告诉它一个文件(或理想情况下是一个目录)中的所有内容都在同一个组中?
    • 好吧,我还没有尝试过,但是从上面的“组成员”解释来看,我认为文件可能是组的一部分。我应该修改上面的例子,让它更明显,等一下......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 2018-02-14
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    相关资源
    最近更新 更多