2011-09-17 30 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