最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

B站首發(fā):如何使用Sphinx生成C++文檔

2019-08-05 11:00 作者:高壓電力電容器  | 我要投稿


寫文檔很重要嗎?

當(dāng)你寫了上萬行代碼,幾十幾百個函數(shù)和類,然后面對源文件一臉懵逼的時候你就不會有這個疑問了。如果規(guī)模較小,那么文檔系統(tǒng)可能對自己沒有太大幫助。但是寫文檔總可以幫助自己總結(jié)和記錄工作。對其他人而言,要知道你的軟件和代碼如何使用,首先就是看你的說明文檔,就和產(chǎn)品說明書一樣,所以寫文檔是非常重要的。

文檔系統(tǒng)是什么呢?

隨著軟件系統(tǒng)的復(fù)雜度日益增大,人們迫切需要一種規(guī)范的軟件文檔使維護(hù)和使用他人軟件代碼更加方便和標(biāo)準(zhǔn)化。這就催生了文檔系統(tǒng),例如Javadoc。通過在源代碼中特殊的注釋方式,就可以通過Javadoc生成非常標(biāo)準(zhǔn)化的注釋文檔,并且文檔系統(tǒng)會分析類之間的繼承關(guān)系,區(qū)分類型,形成查詢索引,大大減輕了人工創(chuàng)建和維護(hù)文檔的負(fù)擔(dān)。更方便地是,它可以直接生成在線的網(wǎng)頁使得文檔的查閱變得很方便。

Customnpc 的Javadoc截圖
為啥用Sphix

為什么使用Sphinx

C++標(biāo)準(zhǔn)的文檔系統(tǒng)是Doxygen,而且Doxygen也可以支持很多其他語言。而Sphinx主要是寫python文檔用的。那么為什么還要使用Sphinx呢?原因有:

  1. Doxygen生成的文檔很丑。這讓你的工程看起來活在90年代。而Sphinx的文檔主題(readthedoc主題)看起來很現(xiàn)代。

  2. Sphinx可以在Readthedoc網(wǎng)站上在線編譯并托管發(fā)布,不需要建立自己的網(wǎng)站就可以在線發(fā)布文檔了。

Eigen的Doxygen文檔
Tornado的Sphinx文檔

那么問題來了,Sphinx是python的文檔系統(tǒng),一個Python的文檔系統(tǒng),怎么就跑去生成C++文檔了呢,主要還是這個顏值和Sphinx的強(qiáng)大功能。接下來就簡單說下怎么做。

Doxygen+breathe+Sphinx

由于C++文檔需要Doxygen去生成,因此有人發(fā)明了breathe去橋接Sphinx和Doxygen兩個文檔系統(tǒng)。可以把Doxygen的輸出作為輸入給Sphinx。后來又有人做了簡化的工具exhale,只需要如下命令:

pip install exhale

就可以集成到Sphinx里去了(不過Doxygen還得另外下載安裝)。具體參見?https://exhale.readthedocs.io/en/latest/。

根據(jù)網(wǎng)站介紹,你的c++工程需要這樣的結(jié)構(gòu)。

exhale樣例工程

其中include和src是你的c++工程,和文檔系統(tǒng)其實沒有關(guān)系,只是文檔系統(tǒng)需要分析的對象。只有docs文件夾里的內(nèi)容才是文檔系統(tǒng)的主體。其中又可以看到index.rst,這個文件是Sphinx文檔的主頁,規(guī)定要顯示的頁面內(nèi)容。conf.py是Sphinx的配置文件,里面需要包括插件配置以及其他參數(shù)的設(shè)置。需要注意的是,實際上我們首先應(yīng)該做的是在doc文件夾下運(yùn)行sphinx-quickstart生成文檔編譯所需的各項文件,再去修改這些配置。然后在conf.py中添加網(wǎng)站所述樣例代碼,就成功配置exhale的文檔插件了。

需要添加的部分代碼

在這里,其實最重要的一個參數(shù)就是?"exhaleDoxygenStdin" 中的INPUT參數(shù)。它指向你想生成文檔的頭文件。這時,文檔系統(tǒng)以及可以調(diào)用doxygen并生成文檔了,但是還需要讓他在頁面上顯示出來。這就需要在index.rst中添加exhale_args對象中定義的rootFile。如下圖中的api/library_root:

添加根文件

需要注意的是這些文件必須放在toctree指令下面,并且不能和上面冒號所表示的選項相連,要空一行。另外,Sphinx也可以支持markdown和rst混合,但是這需要recommonmark插件支持。完成這一步,就以及可以生成文檔了!

文檔生成

在doc文件夾下執(zhí)行make html就可以得到html網(wǎng)頁版的documentation。效果非常贊!需要注意的是默認(rèn)doxygen是不會輸出類的private成員的,需要修改doxygen的配置或參數(shù)。

生成的文檔首頁

在文檔系統(tǒng)中,我們不僅僅可以寫代碼注釋說明,還可以加入公式甚至圖片,相比另外寫一個單獨的說明文檔,不知道高到哪里去了!在別人在代碼和word之間來回穿梭時你只需要好好寫注釋,然后make一下,然后就可以和b站大佬們談笑風(fēng)生去了,回來就可以看到最新且完美的文檔網(wǎng)頁!并且所有類型的鏈接都自動關(guān)聯(lián)好了,非常好查詢。比如下圖中我們可以顯示LaTeX,并注釋函數(shù)參數(shù)。具體如何去寫這種文檔注釋,有很多風(fēng)格,請參考Doxygen的官方文檔:http://www.doxygen.nl/manual/docblocks.html。

你們搞的這個文檔系統(tǒng)啊,Excited!

還有很多其他功能和配置,就不在這里一一展示了。

總結(jié)

Sphinx文檔系統(tǒng)非常好用,而且網(wǎng)頁很漂亮,讀起來非常愉悅。利用exhale構(gòu)建文檔系統(tǒng)的方法也很簡單,只需要做三件小事(不談安裝):1.sphinx-quickstart;2.修改index和conf.py;3.make!真的非常方便了。那么,大家一起努力來寫出精美漂亮的工程文檔吧!

B站首發(fā):如何使用Sphinx生成C++文檔的評論 (共 條)

分享到微博請遵守國家法律
牙克石市| 清苑县| 东乡| 沽源县| 湖口县| 姜堰市| 本溪市| 南皮县| 万盛区| 边坝县| 茌平县| 闸北区| 宝应县| 盱眙县| 玉龙| 廉江市| 黑水县| 容城县| 巨鹿县| 贵阳市| 宝丰县| 肃宁县| 静宁县| 龙南县| 台南市| 宁化县| 天津市| 潞西市| 四子王旗| 蒙城县| 新泰市| 会东县| 安乡县| 常州市| 三都| 阳城县| 德惠市| 沽源县| 雅江县| 临高县| 铜陵市|