2011-09-17 73 views
3

我有一個非常大的類,這是非常有記錄。 Doxygen用於生成HTML文檔,但對於這個類,HTML文件很大〜12 MB,這對我來說太過分了。Doxygen:HTML太大

這種情況監守Doxygen的列表類的所有文檔在一個文件中,但在這種情況下,它desiderable在單獨的頁面拆分類函數文檔,以便有一個合理的頁面。

就是我要問:有沒有解決這個?

也許是有這樣一個特殊的選項/把戲?或... 也許我可以禁用此類的「正常」文檔,並將類函數文檔複製到更好的組織頁面中?在這種情況下,我將@copydoc這些功能,不是嗎?

你有什麼建議嗎?

+5

老實說,我的建議是將課堂分成幾個小部分。 :-) – CodeCaster

+0

* @ CodeCaster *該類由160K +行組成(包含文檔),並且分成11個文件(謝謝*部分*!)。它是自動生成的,所以分成不同的類不是一個選項。 – Luca

回答

1

這是可能的!

有一個配置密鑰:'SEPARATE_MEMBER_PAGES = YES'。這將爲每個班級成員創建一個不同的頁面。

接下來的問題是文件,這些文件的Doxygen生成數(文件系統惡夢),但是這是通過設定可解「CREATE_SUBDIRS = YES」:至少該稀疏文件到目錄,因此使它們易於管理。


後幾天...


號的問題依然存在......不,這是比以往更糟糕的:每個單獨的類成員頁面列表中的所有類成員左:4K成員頁面,每個1 MB使... 4 GB?我的天啊。

所以,我決定從導致HTML刪除該表上市(非常廣闊)。幸運的是,這部分對所有生成的文件是統一的。我做了一個實用程序來實現這一點。這裏是最有用的代碼段(使用HtmlAgilityPack):

HtmlAgilityPack.HtmlNode divNode = htmlDoc.DocumentNode.SelectSingleNode("//body/div[@class='contents']/table/tr/td/div[@class='navtab']"); 

if (divNode != null) { 
    divNode.ParentNode.RemoveChild(divNode, false); 

    Console.WriteLine("Queued {0}", htmlPath); 

    lock (sReducedHtmlPathsLock) { 
     sReducedHtmlPaths.Add(htmlPath, htmlDoc); 
     sReducedHtmlPathsSemaphore.Release(); 
    } 
} 

當然我建立一個多線程程序,它在單獨的線程加載單獨的線程上一堆的HTML文件,並把它們寫太(否則需要太長)。

結果:從4 GB傳遞到60 MB!

您對結果感到好奇:見鏈接頁面從this documentation page