"新API在版本A.B.C" doxygen中的页面

时间:2015-12-23 11:42:51

标签: versioning doxygen

有一个Doxygen选项可指定API何时使用\since标记出现,例如

///
/// Does foo
///
/// \since 1.5
///
void foo();

它会出现在foo()的文档中。

我正在寻找的是一种自动创建包含所有API的页面的方法 出现在1.5中 - 即列出所有由\since 1.5或可能标记的API 一些其他标签(如果有的话)。

修改:我尝试使用\ingroup并创建一个包含所有新API的组页面,并且它可以正常运行。但它会将描述移到此页面,例如将新方法从类定义移动到页面" 1.2.3中的新内容"这不是我想要的。

1 个答案:

答案 0 :(得分:7)

您想为当前的项目创建一个e x ternal 参考\xrefitem

\xrefitem version_change_1_0_0 "Since 1.0.0" "Changes in 1.0.0" ...
             <key>               <heading>    <list title>      <text>

共享相同<key>的所有项目都将显示在特殊生成的页面上。 <heading>将用于在您使用 \xrefitem 的地方开始一个部分,而<list title>将用作结果的标题页面(见下面的评论)。文字可以是任意的。

您获得的结果类似于\todo\bug的列表和外观,您甚至可以将\bug\todo视为

\bug  <text> = \xrefitem bug  "Bug"  "List of bugs" <text>
\todo <text> = \xrefitem todo "Todo" "List of todos" <text>

不幸的是,密钥cannot contain dots:

ID        "$"?[a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF]*
LABELID   [a-z_A-Z\x80-\xFF][a-z_A-Z0-9\x80-\xFF\-]*

因此,您必须使用一个带(至少)两个参数的别名,一个用于标签,一个用于实际文本:

ALIASES += sinceversion{3}="\xrefitem version_changes\1 \"Since \2\" \"Changes in \2\" \3\n\n"
ALIASES += sinceversion{2}="\sinceversion{\1,\2,Introduced in this version.}"

如果你从不使用点,你当然可以简化别名。这将为您提供两个新命令:

  • \sinceversion{label, version}
  • \sinceversion{label, version, custom text}

在这两种情况下,标签必须只包含字母数字符号,版本可以是任意的。如果您没有提供自定义文字,&#34;在此版本中引入&#34;将会出现。

如果有标识为version_changes<label>的页面,则会添加更改列表。请注意,\page的标题将覆盖\xrefitem给出的标题,这对主要版本来说非常方便。

实施例

以下是\sinceversion的使用示例。请注意,如果您记录版本x.y.z的大量更改,则可能需要使用其他别名,例如ALIASES += since_vXYZ{1}="\sinceversion{X_Y_Z,X.Y.Z,\1}"

示例代码

/** Foos around.
 * \sinceversion{001,0.0.1}
*/
void foo(){}

/** Bars around.
 * \sinceversion{001,0.0.1}
 * \sinceversion{002,0.0.2,Removed a memory leak}
*/
void bar(){}

/** \page version_changes002 Changes in 0.0.2
  *
  * We found several memory leaks and removed them
 */

版本更改页面列表

list of change pages

每个版本的更改列表

list of changes per version

每个版本的更改列表及其他说明

description and list

功能文档中的更改外观

references in function descriptions