一雨田的专栏

伟人将复杂的事情变简单,小人将简单的事情变复杂

用户操作
[即时聊天] [发私信] [加为好友]
一雨田ID:dylgsy
91676次访问,排名1090,好友2人,关注者13人。
一雨田
dylgsy的文章
原创 41 篇
翻译 1 篇
转载 6 篇
评论 292 篇
最近评论
heray818:我的邮箱是:heray818@126.com
heray818:你好 能否也传我一份 谢谢了啊
救援隊募集:アダルトエロ不倫
モテ度審査員:童貞セフレナンパ
temp:很好
文章分类
收藏
    相册
    好友Blog
    圈内朋友
    sankt的专栏
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 十分钟文档化你的C++代码——DoxyGen收藏

    新一篇: 细谈C++多态性的"动"与"静" | 旧一篇: 女人,请对你的男人好点

    VS2003、VS2005、JAVA等都配备了代码文档化的工具,你想在VC6中也拥有这么酷的工具吗?本文就让你梦想成真。只需要十分钟哦。:)

    在把你的代码文档化之前,你可能会有以下的疑问:
    一、为什么需要软件文档?
    1、可能你的公司需要一些文档。
    2、如果过半年,你还能认得你的代码吗?
    3、你的同事可能会经常烦着你,"为什么这段代码你这样写啊??"。
    4、你可能将要离开公司或者退休了,但你并不想你的代码从此被扔进垃圾桶里,毕竟这是你的心血。
    5、你觉得需要。

    二、为什么使用自动化的文档生成工具?
    1、你可能随时会改变你的注释,例如函数说明,如果不使用自动化工具,你就要打开你的WORD文档去查找函数说明,然后改变它。
    2、重用你的注释。
    3、自动帮助你的文档格式化,并且可以使用超链接关联。
    4、你的代码虽然包含了很重要的信息,但是在你的注释里,会藏着更重要的信息。这些注释将会影响到你的同事,你程序的测试者,你的经理。

    三、为什么使用DoxyGen?
    1、因为它是免费的,开源的,可配置的。现在的版本是1.4.7。你可以在下面的地址下载到它:
    http://www.doxygen.org/download.html

     

    好了,如果上面的疑问都解答后,下面让我们看看怎么使用DoxyGen

    在你的代码中使用特定的格式写注释:
    1、使用///注释,例如:

    /// 这是一个结构体
    /// 它是用来获取矩形信息的
    struct SNAPINFO
    {
     // ...
    }

    2、使用
    /**

    */
    来写注释,例如:

    /**
     这是一个类
    */
    class CHi
    {
     // ...
    }

    还有其他的注释符号,详细的可以查看DoxyGen的帮助文档。


    3、把下面的文本拷贝到指定的文件中(GenDoc.bat和default.doxygen)

    GenDoc.bat文件里的内容:

    "d:\program files\doxygen\bin\doxygen.exe" default.doxygen

    注意:d:\program files\doxygen\bin\doxygen.exe 只是我安装DoxyGen的路径,你可以自己选择你的安装路径。

    default.doxygen文件里的内容

    # Doxyfile 1.3-rc2

    #---------------------------------------------------------------------------
    # General configuration options
    #---------------------------------------------------------------------------
    PROJECT_NAME           = Project Name
    PROJECT_NUMBER         =
    OUTPUT_DIRECTORY       =
    OUTPUT_LANGUAGE        = Chinese
    EXTRACT_ALL            = YES
    EXTRACT_PRIVATE        = NO
    EXTRACT_STATIC         = YES
    EXTRACT_LOCAL_CLASSES  = YES
    HIDE_UNDOC_MEMBERS     = NO
    HIDE_UNDOC_CLASSES     = NO
    HIDE_FRIEND_COMPOUNDS  = NO
    HIDE_IN_BODY_DOCS      = NO
    BRIEF_MEMBER_DESC      = YES
    REPEAT_BRIEF           = YES
    ALWAYS_DETAILED_SEC    = NO
    INLINE_INHERITED_MEMB  = NO
    FULL_PATH_NAMES        = NO
    STRIP_FROM_PATH        =
    INTERNAL_DOCS          = NO
    CASE_SENSE_NAMES       = YES
    SHORT_NAMES            = NO
    HIDE_SCOPE_NAMES       = NO
    VERBATIM_HEADERS       = YES
    SHOW_INCLUDE_FILES     = YES
    JAVADOC_AUTOBRIEF      = YES
    MULTILINE_CPP_IS_BRIEF = NO
    DETAILS_AT_TOP         = YES
    INHERIT_DOCS           = NO
    INLINE_INFO            = YES
    SORT_MEMBER_DOCS       = NO
    DISTRIBUTE_GROUP_DOC   = YES
    TAB_SIZE               = 8
    GENERATE_TODOLIST      = YES
    GENERATE_TESTLIST      = YES
    GENERATE_BUGLIST       = YES
    GENERATE_DEPRECATEDLIST= YES
    ALIASES                =
    ENABLED_SECTIONS       =
    MAX_INITIALIZER_LINES  = 30
    OPTIMIZE_OUTPUT_FOR_C  = YES
    OPTIMIZE_OUTPUT_JAVA   = NO
    SHOW_USED_FILES        = YES
    #---------------------------------------------------------------------------
    # configuration options related to warning and progress messages
    #---------------------------------------------------------------------------
    QUIET                  = NO
    WARNINGS               = YES
    WARN_IF_UNDOCUMENTED   = YES
    WARN_IF_DOC_ERROR      = YES
    WARN_FORMAT            = "$file($line): $text"
    WARN_LOGFILE           =
    #---------------------------------------------------------------------------
    # configuration options related to the input files
    #---------------------------------------------------------------------------
    INPUT                  = .
    FILE_PATTERNS          = *.cpp \
                             *.c \
                             *.h \
                             *.cxx \
                             *.idl
    RECURSIVE              = YES
    EXCLUDE                =
    EXCLUDE_SYMLINKS       = NO
    EXCLUDE_PATTERNS       =
    EXAMPLE_PATH           =
    EXAMPLE_PATTERNS       =
    EXAMPLE_RECURSIVE      = NO
    IMAGE_PATH             =
    INPUT_FILTER           =
    FILTER_SOURCE_FILES    = NO
    #---------------------------------------------------------------------------
    # configuration options related to source browsing
    #---------------------------------------------------------------------------
    SOURCE_BROWSER         = YES
    INLINE_SOURCES         = NO
    STRIP_CODE_COMMENTS    = YES
    REFERENCED_BY_RELATION = NO
    REFERENCES_RELATION    = NO
    #---------------------------------------------------------------------------
    # configuration options related to the alphabetical class index
    #---------------------------------------------------------------------------
    ALPHABETICAL_INDEX     = YES
    COLS_IN_ALPHA_INDEX    = 4
    IGNORE_PREFIX          =
    #---------------------------------------------------------------------------
    # configuration options related to the HTML output
    #---------------------------------------------------------------------------
    GENERATE_HTML          = YES
    HTML_OUTPUT            = doxydoc
    HTML_FILE_EXTENSION    = .html
    HTML_HEADER            =
    HTML_FOOTER            =
    HTML_STYLESHEET        =
    HTML_ALIGN_MEMBERS     = YES
    GENERATE_HTMLHELP      = NO
    CHM_FILE               =
    HHC_LOCATION           =
    GENERATE_CHI           = NO
    BINARY_TOC             = NO
    TOC_EXPAND             = NO
    DISABLE_INDEX          = NO
    ENUM_VALUES_PER_LINE   = 4
    GENERATE_TREEVIEW      = NO
    TREEVIEW_WIDTH         = 250
    #---------------------------------------------------------------------------
    # configuration options related to the LaTeX output
    #---------------------------------------------------------------------------
    GENERATE_LATEX         = YES
    LATEX_OUTPUT           = latex
    LATEX_CMD_NAME         = latex
    MAKEINDEX_CMD_NAME     = makeindex
    COMPACT_LATEX          = NO
    PAPER_TYPE             = a4wide
    EXTRA_PACKAGES         =
    LATEX_HEADER           =
    PDF_HYPERLINKS         = NO
    USE_PDFLATEX           = NO
    LATEX_BATCHMODE        = NO
    #---------------------------------------------------------------------------
    # configuration options related to the RTF output
    #---------------------------------------------------------------------------
    GENERATE_RTF           = NO
    RTF_OUTPUT             = rtf
    COMPACT_RTF            = NO
    RTF_HYPERLINKS         = NO
    RTF_STYLESHEET_FILE    =
    RTF_EXTENSIONS_FILE    =
    #---------------------------------------------------------------------------
    # configuration options related to the man page output
    #---------------------------------------------------------------------------
    GENERATE_MAN           = NO
    MAN_OUTPUT             = man
    MAN_EXTENSION          = .3
    MAN_LINKS              = NO
    #---------------------------------------------------------------------------
    # configuration options related to the XML output
    #---------------------------------------------------------------------------
    GENERATE_XML           = NO
    XML_SCHEMA             =
    XML_DTD                =
    #---------------------------------------------------------------------------
    # configuration options for the AutoGen Definitions output
    #---------------------------------------------------------------------------
    GENERATE_AUTOGEN_DEF   = NO
    #---------------------------------------------------------------------------
    # configuration options related to the Perl module output
    #---------------------------------------------------------------------------
    GENERATE_PERLMOD       = NO
    PERLMOD_LATEX          = NO
    PERLMOD_PRETTY         = YES
    PERLMOD_MAKEVAR_PREFIX =
    #---------------------------------------------------------------------------
    # Configuration options related to the preprocessor  
    #---------------------------------------------------------------------------
    ENABLE_PREPROCESSING   = YES
    MACRO_EXPANSION        = NO
    EXPAND_ONLY_PREDEF     = NO
    SEARCH_INCLUDES        = YES
    INCLUDE_PATH           =
    INCLUDE_FILE_PATTERNS  =
    PREDEFINED             =
    EXPAND_AS_DEFINED      =
    SKIP_FUNCTION_MACROS   = YES
    #---------------------------------------------------------------------------
    # Configuration::addtions related to external references  
    #---------------------------------------------------------------------------
    TAGFILES               =
    GENERATE_TAGFILE       =
    ALLEXTERNALS           = NO
    EXTERNAL_GROUPS        = YES
    PERL_PATH              = /usr/bin/perl
    #---------------------------------------------------------------------------
    # Configuration options related to the dot tool  
    #---------------------------------------------------------------------------
    CLASS_DIAGRAMS         = YES
    HIDE_UNDOC_RELATIONS   = YES
    HAVE_DOT               = NO
    CLASS_GRAPH            = YES
    COLLABORATION_GRAPH    = YES
    TEMPLATE_RELATIONS     = YES
    INCLUDE_GRAPH          = YES
    INCLUDED_BY_GRAPH      = YES
    GRAPHICAL_HIERARCHY    = YES
    DOT_IMAGE_FORMAT       = png
    DOT_PATH               =
    DOTFILE_DIRS           =
    MAX_DOT_GRAPH_WIDTH    = 1024
    MAX_DOT_GRAPH_HEIGHT   = 1024
    GENERATE_LEGEND        = YES
    DOT_CLEANUP            = YES
    #---------------------------------------------------------------------------
    # Configuration::addtions related to the search engine  
    #---------------------------------------------------------------------------
    SEARCHENGINE           = NO
    CGI_NAME               = search.cgi
    CGI_URL                =
    DOC_URL                =
    DOC_ABSPATH            =
    BIN_ABSPATH            = /usr/local/bin/
    EXT_DOC_PATHS          =

    好了,有了上面的两个文件,你只需在你的VC6工程目录里,把这两个文件拷贝过去,然后执行GenDoc.bat就行了。噢,别忘了把 default.doxygen 中的 PROJECT_NAME  改成你的工程名!
    好了,你现在就看着文档生成吧!别吓着哦!呵呵!
    注意:工程别放在桌面上,好像DoxyGen不认得中文路径的。

     

    发表于 @ 2006年07月26日 10:19:00|评论(loading...)|编辑

    新一篇: 细谈C++多态性的"动"与"静" | 旧一篇: 女人,请对你的男人好点

    评论

    #gg 发表于2006-07-27 00:10:00  IP: 61.144.106.*
    ^_^
    #sevencat 发表于2006-07-27 09:19:00  IP: 203.156.209.*
    GENERATE_HTMLHELP = NO
    CHM_FILE =
    这两个选项很有用的。
    #learner 发表于2006-07-27 12:32:00  IP: 218.1.67.*
    学习以下
    #ok 发表于2006-07-27 16:35:00  IP: 60.28.33.*
    别忘了,陪上图哦
    google("Graphviz")
    #flyingxu 发表于2006-07-28 14:55:00  IP: 208.22.104.*
    生成的文档是什么样子的?
    这样的文档有什么用?
    #pi1ot 发表于2006-08-02 18:32:00  IP: 61.135.152.*
    适于生成类库或者函数库的速查手册,不适于生成应用系统的文档或者反向工程。
    #qmroom 发表于2008-08-27 14:56:01  IP: 221.224.118.*
    这里也有介绍:http://dev.csdn.net/article/57/57051.shtm
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 一雨田