如何在doxygen中重新生成类url?
我正在使用doxygen为一个程序生成文档。现在我想将生成的文档链接到另一个网站/程序中(完全独立) 我的想法是生成一个与doxygen生成的URL相同的URL,例如,我的类名是如何在doxygen中重新生成类url?,doxygen,Doxygen,我正在使用doxygen为一个程序生成文档。现在我想将生成的文档链接到另一个网站/程序中(完全独立) 我的想法是生成一个与doxygen生成的URL相同的URL,例如,我的类名是Models.PMF.Phen.GenericPhase,而doxygen生成的URL是class\u Models\u 1\u p\u m\u f\u 1\u Phen\u 1\u generic\u phase.html。我不明白为什么url中有这么多的下划线和1 我的问题是 是否可以更改doxygen生成的URL的
Models.PMF.Phen.GenericPhase
,而doxygen生成的URL是class\u Models\u 1\u p\u m\u f\u 1\u Phen\u 1\u generic\u phase.html
。我不明白为什么url中有这么多的下划线
和1
我的问题是
class/Models/PMF/Phen/GenericPhase.html
谢谢你的建议。如果我的问题不清楚,请告诉我。简短的故事是:我认为Doxygen生成的URL可以安全使用 回答以下问题: 不,您不能让Doxygen创建您想要的路径(但我同意这可能很好) 下划线是Doxygen将原始名称移植到任何文件系统上的方法。
\u 1
代替了
字符。所有大写字母均替换为小写字母,前面加上。
。这种损坏是相当一致的,所以我认为你应该能够安全地使用它
util.cpp中有一个名为escapecharinstring(…)
的例程,它执行此转换。正如我所说,所有的大写字母都改为小写,前面加下划线。各种其他字符被转换为x?(其中?是从1到9或从00到0C的数字)。最后,如果遇到下划线,下划线本身会加倍。(“my_函数”最后得到3个下划线:my_函数
)
下面是各种字符的源代码片段。老实说,我不明白为什么你会得到
的\u 1
,因为对于我的\u 8
。我在C,不是C++;但即使知道我已经搜索了源代码,仍然没有找到解释。因此,我只说我“认为”URL使用起来是安全的:)
case''uu':如果(allowUnderscore)growBuf.addChar('uu');else growBuf.addStr(“”);打破
案例'-':growBuf.addChar('-');打破
案例“:”:growBuf.addStr(“_1”);打破
案例“/”:growBuf.addStr(“_2”);打破
案例“”:growBuf.addStr(“_4”);打破
案例“*”:growBuf.addStr(“_5”);打破
案例“&”:growBuf.addStr(“_6”);打破
案例“|”:growBuf.addStr(“|7”);打破
大小写“.”:如果(allowDots)growBuf.addChar(“.”);else growBuf.addStr(“_8”);打破
案例“!”:growBuf.addStr(“_9”);打破
案例',':growBuf.addStr(“_00”);打破
案例“”:growBuf.addStr(“_01”);打破
大小写“{”:growBuf.addStr(“02”);break;
案例“}”:growBuf.addStr(“03”);打破
案例“?”:growBuf.addStr(“_04”);打破
案例“^”:growBuf.addStr(“_05”);打破
案例“%”:growBuf.addStr(“06”);打破
案例“(”:growBuf.addStr(“07”);break;
案例“)”:growBuf.addStr(“_08”);打破
格“+”:growBuf.addStr(“_09”);打破
大小写“=”:growBuf.addStr(“'u 0A”);打破
案例“$”:growBuf.addStr(“'u 0B”);打破
案例“\\”:growBuf.addStr(“\u 0C”);打破
现在更进一步,如果结果名大于128个字符,则使用MD5编码方案,这将导致文件名看起来像垃圾。它基本上是对原始名称的加密,所以只要您的原始名称始终完全相同(包括参数!),就可以安全地使用它。另请参见util.cpp中的
convertNameToFile(…)
。对于要存储在磁盘上的名称(例如,在windows上,不区分小写和大写文件名),名称混乱是用于更独立于系统的。映射算法可以在代码(util.cpp例程convertNameToFile)中找到。非常感谢您的详细解释。这对我真的很有帮助。顺便说一下:我使用C#和doxygen 1.8.9.1
case '_': if (allowUnderscore) growBuf.addChar('_'); else growBuf.addStr("__"); break;
case '-': growBuf.addChar('-'); break;
case ':': growBuf.addStr("_1"); break;
case '/': growBuf.addStr("_2"); break;
case '<': growBuf.addStr("_3"); break;
case '>': growBuf.addStr("_4"); break;
case '*': growBuf.addStr("_5"); break;
case '&': growBuf.addStr("_6"); break;
case '|': growBuf.addStr("_7"); break;
case '.': if (allowDots) growBuf.addChar('.'); else growBuf.addStr("_8"); break;
case '!': growBuf.addStr("_9"); break;
case ',': growBuf.addStr("_00"); break;
case ' ': growBuf.addStr("_01"); break;
case '{': growBuf.addStr("_02"); break;
case '}': growBuf.addStr("_03"); break;
case '?': growBuf.addStr("_04"); break;
case '^': growBuf.addStr("_05"); break;
case '%': growBuf.addStr("_06"); break;
case '(': growBuf.addStr("_07"); break;
case ')': growBuf.addStr("_08"); break;
case '+': growBuf.addStr("_09"); break;
case '=': growBuf.addStr("_0A"); break;
case '$': growBuf.addStr("_0B"); break;
case '\\': growBuf.addStr("_0C"); break;