﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-good good code,day day up-文章分类-Version control</title><link>http://www.cppblog.com/dawnbreak/category/8916.html</link><description>http://blog.csdn.net/dawnbreak/</description><language>zh-cn</language><lastBuildDate>Sat, 09 May 2009 11:21:28 GMT</lastBuildDate><pubDate>Sat, 09 May 2009 11:21:28 GMT</pubDate><ttl>60</ttl><item><title>Doxygen + Graphviz + Htmlhelp, 成为文档好手</title><link>http://www.cppblog.com/dawnbreak/articles/82036.html</link><dc:creator>pear_li</dc:creator><author>pear_li</author><pubDate>Wed, 06 May 2009 06:49:00 GMT</pubDate><guid>http://www.cppblog.com/dawnbreak/articles/82036.html</guid><wfw:comment>http://www.cppblog.com/dawnbreak/comments/82036.html</wfw:comment><comments>http://www.cppblog.com/dawnbreak/articles/82036.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dawnbreak/comments/commentRss/82036.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dawnbreak/services/trackbacks/82036.html</trackback:ping><description><![CDATA[<p id=o8gz0>doxygen</p>
<p id=o8gz1>&nbsp;</p>
<p id=o8gz2>在Linux下面开发，在代码中一般注释doxygen格式的注释，这是帮助我们生成文档的一个好方法。</p>
<p id=o8gz3>对于doxygen的主要是语法，网上有很多的说明，有个工程：GNOME Power Manager里面的doxygen</p>
<p id=gr8v0>注释写的非常好，你们可以下载下来看看，并且可以借鉴到自己的实际开发中。</p>
<p id=gr8v1>&nbsp;</p>
<p id=gr8v2>这里我想说的是：如何从source code 总提取开源软件的文档。</p>
<p id=gr8v3>&nbsp;</p>
<p id=gr8v4>有3个工具可以先安装一下：</p>
<p id=gr8v5>1 doxygen</p>
<p id=gr8v6>2 Graphviz</p>
<p id=ra0j0>3 htmlhelp</p>
<p id=ra0j1>&nbsp;</p>
<p id=ra0j2>&nbsp;</p>
<p id=n-y30>1 doxygen是大名鼎鼎代码文档工具。</p>
<p id=oreg0>下载地址：<a id=oreg1 href="http://www.doxygen.org/"><font color=#551a8b><u>www.doxygen.org</u></font></a></p>
<p id=oreg2>安装它。</p>
<p id=oreg3>&nbsp;</p>
<p id=n-y31>&nbsp;</p>
<p id=n-y32>2 Graphviz</p>
<p id=n-y33>这个工具配合doxygen使用，可以提取函数，模块之间的调用关系，非常清晰。</p>
<p id=v9wg0>下载地址：<a id=v9wg1 href="http://www.graphviz.org/Download..php"><font color=#551a8b><u>http://www.graphviz.org/Download..php</u></font></a></p>
<p id=n-y34>&nbsp;</p>
<p id=v9wg2>下面是Graphviz提取出来的一些关系图：</p>
<p id=n-y35>
<table id=n-y36 rules=groups>
    <tbody id=n-y37>
        <tr id=n-y38>
            <td id=n-y39 align=middle><a id=n-y310 href="http://www.graphviz.org/Gallery/directed/cluster.html"><img id=n-y311 title=cluster alt="" src="http://www.graphviz.org/Gallery/directed/cluster.small.png" border=0></a></td>
            <td id=n-y312 align=middle><a id=n-y313 href="http://www.graphviz.org/Gallery/directed/crazy.html"><img id=n-y314 title=crazy alt="" src="http://www.graphviz.org/Gallery/directed/crazy.small.png" border=0></a></td>
            <td id=n-y315 align=middle><a id=n-y316 href="http://www.graphviz.org/Gallery/directed/datastruct.html"><img id=n-y317 title=datastruct alt="" src="http://www.graphviz.org/Gallery/directed/datastruct.small.png" border=0></a></td>
            <td id=n-y318 align=middle><a id=n-y319 href="http://www.graphviz.org/Gallery/directed/fsm.html"><img id=n-y320 title=fsm alt="" src="http://www.graphviz.org/Gallery/directed/fsm.small.png" border=0></a></td>
        </tr>
        <tr id=n-y321>
            <td id=n-y322 align=middle><a id=n-y323 href="http://www.graphviz.org/Gallery/directed/cluster.html"><font color=#0066cc><u>cluster</u></font></a></td>
            <td id=n-y324 align=middle><a id=n-y325 href="http://www.graphviz.org/Gallery/directed/crazy.html"><font color=#0066cc><u>crazy</u></font></a></td>
            <td id=n-y326 align=middle><a id=n-y327 href="http://www.graphviz.org/Gallery/directed/datastruct.html"><font color=#0066cc><u>datastruct</u></font></a></td>
            <td id=n-y328 align=middle><a id=n-y329 href="http://www.graphviz.org/Gallery/directed/fsm.html"><font color=#0066cc><u>fsm</u></font></a></td>
        </tr>
    </tbody>
    <tbody id=n-y330>
        <tr id=n-y331>
            <td id=n-y332 align=middle><a id=n-y333 href="http://www.graphviz.org/Gallery/directed/hello.html"><font color=#0066cc><u><img id=n-y334 title=hello alt="" src="http://www.graphviz.org/Gallery/directed/hello.small.png" border=0></u></font></a></td>
            <td id=n-y335 align=middle><a id=n-y336 href="http://www.graphviz.org/Gallery/directed/profile.html"><font color=#0066cc><u><img id=n-y337 title=profile alt="" src="http://www.graphviz.org/Gallery/directed/profile.small.png" border=0></u></font></a></td>
            <td id=n-y338 align=middle><a id=n-y339 href="http://www.graphviz.org/Gallery/directed/sdh.html"><font color=#0066cc><u><img id=n-y340 title=sdh alt="" src="http://www.graphviz.org/Gallery/directed/sdh.small.png" border=0></u></font></a></td>
            <td id=n-y341 align=middle><a id=n-y342 href="http://www.graphviz.org/Gallery/directed/switch.html"><font color=#0066cc><u><img id=n-y343 title=switch alt="" src="http://www.graphviz.org/Gallery/directed/switch.small.png" border=0></u></font></a></td>
        </tr>
        <tr id=n-y344>
            <td id=n-y345 align=middle><a id=n-y346 href="http://www.graphviz.org/Gallery/directed/hello.html"><font color=#0066cc><u>hello</u></font></a></td>
            <td id=n-y347 align=middle><a id=n-y348 href="http://www.graphviz.org/Gallery/directed/profile.html"><font color=#0066cc><u>profile</u></font></a></td>
            <td id=n-y349 align=middle><a id=n-y350 href="http://www.graphviz.org/Gallery/directed/sdh.html"><font color=#0066cc><u>sdh</u></font></a></td>
            <td id=n-y351 align=middle><a id=n-y352 href="http://www.graphviz.org/Gallery/directed/switch.html"><font color=#0066cc><u>switch</u></font></a></td>
        </tr>
    </tbody>
    <tbody id=n-y353>
        <tr id=n-y354>
            <td id=n-y355 align=middle><a id=n-y356 href="http://www.graphviz.org/Gallery/directed/unix.html"><font color=#0066cc><u><img id=n-y357 title=unix alt="" src="http://www.graphviz.org/Gallery/directed/unix.small.png" border=0></u></font></a></td>
            <td id=n-y358 align=middle><a id=n-y359 href="http://www.graphviz.org/Gallery/directed/world.html"><font color=#0066cc><u><img id=n-y360 title=world alt="" src="http://www.graphviz.org/Gallery/directed/world.small.png" border=0></u></font></a></td>
            <td id=n-y361 align=middle><a id=n-y362 href="http://www.graphviz.org/Gallery/twopi/twopi2.html"><font color=#0066cc><u><img id=n-y363 title=twopi2 alt="" src="http://www.graphviz.org/Gallery/twopi/twopi2.small.png" border=0></u></font></a></td>
            <td id=n-y364 align=middle><a id=n-y365 href="http://www.graphviz.org/Gallery/undirected/ER.html"><font color=#0066cc><u><img id=n-y366 title=ER alt="" src="http://www.graphviz.org/Gallery/undirected/ER.small.png" border=0></u></font></a></td>
        </tr>
        <tr id=n-y367>
            <td id=n-y368 align=middle><a id=n-y369 href="http://www.graphviz.org/Gallery/directed/unix.html"><font color=#0066cc><u>unix</u></font></a></td>
            <td id=n-y370 align=middle><a id=n-y371 href="http://www.graphviz.org/Gallery/directed/world.html"><font color=#0066cc><u>world</u></font></a></td>
            <td id=n-y372 align=middle><a id=n-y373 href="http://www.graphviz.org/Gallery/twopi/twopi2.html"><font color=#0066cc><u>twopi2</u></font></a></td>
            <td id=n-y374 align=middle><a id=n-y375 href="http://www.graphviz.org/Gallery/undirected/ER.html"><font color=#0066cc><u>ER</u></font></a></td>
        </tr>
    </tbody>
    <tbody id=n-y376>
        <tr id=n-y377>
            <td id=n-y378 align=middle><a id=n-y379 href="http://www.graphviz.org/Gallery/undirected/fdpclust.html"><font color=#0066cc><u><img id=n-y380 title=fdpclust alt="" src="http://www.graphviz.org/Gallery/undirected/fdpclust.small.png" border=0></u></font></a></td>
            <td id=n-y381 align=middle><a id=n-y382 href="http://www.graphviz.org/Gallery/undirected/process.html"><font color=#0066cc><u><img id=n-y383 title=process alt="" src="http://www.graphviz.org/Gallery/undirected/process.small.png" border=0></u></font></a></td>
            <td id=n-y384 align=middle><a id=n-y385 href="http://www.graphviz.org/Gallery/undirected/softmaint.html"><font color=#0066cc><u><img id=n-y386 title=softmaint alt="" src="http://www.graphviz.org/Gallery/undirected/softmaint.small.png" border=0></u></font></a></td>
            <td id=n-y387 align=middle><a id=n-y388 href="http://www.graphviz.org/Gallery/undirected/transparency.html"><font color=#0066cc><u><img id=n-y389 title=transparency alt="" src="http://www.graphviz.org/Gallery/undirected/transparency.small.png" border=0></u></font></a></td>
        </tr>
        <tr id=n-y390>
            <td id=n-y391 align=middle><a id=n-y392 href="http://www.graphviz.org/Gallery/undirected/fdpclust.html"><font color=#0066cc><u>fdpclust</u></font></a></td>
            <td id=n-y393 align=middle><a id=n-y394 href="http://www.graphviz.org/Gallery/undirected/process.html"><font color=#0066cc><u>process</u></font></a></td>
            <td id=n-y395 align=middle><a id=n-y396 href="http://www.graphviz.org/Gallery/undirected/softmaint.html"><font color=#0066cc><u>softmaint</u></font></a></td>
            <td id=n-y397 align=middle><a id=n-y398 href="http://www.graphviz.org/Gallery/undirected/transparency.html"><u><font color=#0066cc>transparency</font></u></a></td>
        </tr>
    </tbody>
</table>
</p>
<p id=v_pp0>&nbsp;</p>
<p id=v_pp1>&nbsp;</p>
<p id=v_pp2>&nbsp;3 htmlhelp</p>
<p id=ua2j0>这个工具把doxygen生成的html文件，转化为一个CHM文件，看起来方便些。</p>
<p id=ua2j1>&nbsp;下载地址：<a id=qt1b0 href="http://www.softpedia.com/get/Authoring-tools/Help-e-book-creators/HTML-Help-Workshop.shtml"><font color=#551a8b><u>http://www.softpedia.com/get/Authoring-tools/Help-e-book-creators/HTML-Help-Workshop.shtml</u></font></a></p>
<p id=oreg4>安装它。</p>
<p id=z9su1>&nbsp;</p>
<p id=z9su2>4 我们以GNOME POWER Manager为例，看看如何使用这些工具，提供我们的文档能力。</p>
<p id=z9su3>&nbsp;源码下载地址：</p>
<p id=lnm70><a id=lnm71 href="http://www.gnome.org/projects/gnome-power-manager/"><font color=#551a8b><u>http://www.gnome.org/projects/gnome-power-manager/</u></font></a></p>
<p id=oreg5>&nbsp;</p>
<p id=oreg6>&nbsp;</p>
<p id=oreg7>&nbsp;下载源码，解压后，我们来看看如果使用上面的3个工具：</p>
<p id=bh:q0>首先用doxygen:</p>
<div id=gaxo style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left"><img id=b2470 alt="" src="http://docs.google.com/File?id=dhgrrxzb_86pwr5b8gv_b"></div>
<div id=b2471 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">
<div id=ttgy style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left"><img id=ks8b0 alt="" src="http://docs.google.com/File?id=dhgrrxzb_876dr94bg9_b"></div>
<div id=ks8b1 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">
<div id=dk7t style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left"><img id=i7w20 alt="" src="http://docs.google.com/File?id=dhgrrxzb_88hd9h8cf4_b"></div>
<div id=i7w21 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">
<div id=d9nn style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left"><span class=writely-comment id=writely-comment-id-dhgrrxzb style="BACKGROUND-COLOR: rgb(255,255,215)"><img id=rk7d0 alt="" src="http://docs.google.com/File?id=dhgrrxzb_89fj7x4gf7_b">&nbsp;</span>&nbsp;</div>
<div id=rk7d1 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">&nbsp;</div>
<div id=rk7d2 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">
<div id=fqfy style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left"><img id=wl6j0 alt="" src="http://docs.google.com/File?id=dhgrrxzb_90fz7z4hdq_b"></div>
<div id=dvl30 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">生成的帮助文档里面带有，call graph. </div>
<div id=dvl31 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">接着用htmlhelp workshop:</div>
<div id=epue0 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">
<div id=mmx1 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left"><img id=dzgq0 alt="" src="http://docs.google.com/File?id=dhgrrxzb_91fvhz7zfq_b"></div>
<div id=eykg0 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">&nbsp;</div>
<div id=eykg1 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">
<div id=f-wa style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left"><img id=nz8n0 alt="" src="http://docs.google.com/File?id=dhgrrxzb_92gfw88pcb_b"></div>
<div id=exnf0 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">
<div id=n:7g style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left"><img id=exnf1 alt="" src="http://docs.google.com/File?id=dhgrrxzb_93ct8vbqcr_b"></div>
<div id=iv9i0 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">
<div id=j86b style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left"><img id=c2rw0 alt="" src="http://docs.google.com/File?id=dhgrrxzb_94pd7d6vg6_b"></div>
</div>
<div id=zg:j0 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">生成的CHM文件：</div>
<div id=zg:j1 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">
<div id=fj6b style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left"><img id=eh070 alt="" src="http://docs.google.com/File?id=dhgrrxzb_95cfhqdtdj_b"></div>
<div id=eh071 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">以及各个调用关系，一目了然：</div>
<div id=eh072 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">
<div id=p:tc style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left"><img id=oj1h0 alt="" src="http://docs.google.com/File?id=dhgrrxzb_96v7jsmsm7_b"></div>
</div>
从生成的代码注释上看，GNOME Power Manager对于注释用的是非常好的，这可以用到我们的实际开发中。</div>
<div id=wl4:0 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 1em; PADDING-TOP: 1em; TEXT-ALIGN: left">另外GNOME Power Manager是对GObject用的最好的，大家也可以借鉴其用法。</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<img src ="http://www.cppblog.com/dawnbreak/aggbug/82036.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dawnbreak/" target="_blank">pear_li</a> 2009-05-06 14:49 <a href="http://www.cppblog.com/dawnbreak/articles/82036.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>