如何将未注释的代码块添加到编号的文档部分

时间:2014-12-20 02:00:39

标签: c++ documentation comments doxygen

我需要生成具有编号的参考块列表的文档,这些参考块包含标记,递增编号和实际代码块(最好带有链接)。我至少可以处理标签,唯一编号和真正的代码块。

所以这个:

C ++代码

    int a = 5;
    int b = 10;
    int c, d;
    /**
     * @method{} Multiply
     */
    c = a*b;
    /** @endmethod */
    /**
     * @method{} Divide
     */
    d = a/b;
    /** @endmethod */

并将其转换为名为“方法”的“相关页面”下的“Doxygen”页面,其中列出了这两个方法的标题,如:

Doxygen输出 - 相关页面 - 方法

Function foobar

Method 1: Multiply      <-- {} First argument turns to a number?
c = a*b;                <-- More important: This gets pulled from the code?

Method 2: Divide
d = a/b;

也许有更好的工具呢?

通过在Doxyfile中添加此别名,我已经通过我的评论在“相关页面”下生成“方法”页面:

的Doxyfile

ALIASES += "method=\xrefitem method \"Method \" \"Methods\" "

但我无法找到一种方法来获取实际代码以插入文档...或者如何自动或手动编号(我可以预处理)...最接近我得到的是 @code 群组这很黑,但没有用?

1 个答案:

答案 0 :(得分:0)

自动编号似乎不可用,最接近抓取代码的东西似乎是@snippet命令,但这不符合我的架构,因为我不需要使用任何@ref或@anchors或自定义@pages,只是将代码插入到@xrefitem块的文档中。

所以答案我想出了最好的结果(除非其他人用更好的东西做出回应!)是破解@code块我只能假设是一种不受支持的方式,但碰巧完全适用于我需要(标签号需要预处理,所以我将它们保留为{},直到文档或使用预提交钩子):

的Doxyfile:

ALIASES += "mynotes=\verbatim My Notes:\n"
ALIASES += "endmynotes=\endverbatim"
ALIASES += "model=\xrefitem model \"Model\" \"Models\" "
ALIASES += "model{1}=\xrefitem mathmodel \"Model\" \"Models\" #\1:  "

代码:

/// @model{10} Do this thing with a preprocessed tag number
/// @mynotes
/// Place my notes here verbatim
/// @endmynotes
/// @code{.cpp}
    m_serr << "Bad contents!" << std::endl;
/// @endcode

输出HTML文档:

模型((链接到模型页面)):
#10:用预处理的标签号

做这件事
My Notes:
   Place my notes here verbatim

{.cpp} m_serr << "Bad contents!" << std::endl;