如何在 doxygen 中重新生成 class url?

How can I regenerate a class url in doxygen?

我正在使用 doxygen 为程序生成文档。现在我想 link 在另一个 website/program 中生成文档(完全独立)。

我的想法是生成一个 URL 与生成的 doxygen 一样,例如我的 class 名字是 Models.PMF.Phen.GenericPhase,生成的 doxygen url 是 class_models_1_1_p_m_f_1_1_phen_1_1_generic_phase.html。我不明白为什么url里有那么多underscore1

我的问题是

  1. 是否可以更改生成的 doxygen 的样式 URL,即 class/Models/PMF/Phen/GenericPhase.html
  2. doxygen 生成 URL.
  3. 时是否有任何模式

感谢您的任何建议。如果我的问题不清楚,请告诉我。

简而言之:我认为 Doxygen 生成的 URL 可以安全使用。

回答问题: 不,你不能让 Doxygen 来创建你想要的路径(但我同意这可能很好)

下划线是 Doxygen 使原始名称可移植到任何文件系统的方式。 _1. 字符的替代品。所有大写字母都被替换为前面带有 _ 的小写字母。这种处理非常一致,所以我认为您应该能够安全地使用它。

util.cpp 中有一个名为 escapeCharsInString(...) 的例程可以执行此转换。正如我所说,所有大写字母都变为小写字母并在前面加上下划线。其他各种字符被转换为 _? (其中 ? 是从 1 到 9 或 00 到 0C 的数字)。最后,如果遇到下划线本身会加倍。 ("my_Function" 最终得到 3 个下划线:my___function)。

下面是各种角色的源代码片段。老实说,我很困惑为什么 . 会得到 _1,因为对于我来说它会转换为 _8。我在 C,而不是 C++;但即使知道我已经搜索了源代码,仍然没有找到解释。因此,我只说我 "think" URL 可以安全使用 :)

  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;

现在更进一步,如果结果名称大于 128 个字符,则会使用 MD5 编码方案,这会导致文件名看起来像垃圾。它基本上是原始名称的加密,因此只要您的原始名称始终完全相同(包括参数!),就可以安全使用。另见 util.cpp.

中的 convertNameToFile(...)