Doxygen:如何包含一个降价页面来记录一个组



>我有一个相当复杂的项目,我想用doxygen来记录它。

我在记录代码时没有问题,并且我还设法使用自定义README.md文件以及Doxyfile中的"USE_MDFILE_AS_MAINPAGE = README.md"指令拥有一个漂亮的首页。

我定义了几个组(@defgroup(,它们在我的文档中显示为"模块"。

我想在每个组中添加一个"主页",除了习惯的函数/变量/类型文档之外,提供一般信息。

我尝试在组定义中添加自定义MODULENAME.md文件以及匹配的@includedoc MODULENAME.md条目,它似乎可以工作(我看到几行,例如:"Generating docs for page md_mcu_noitr_coro_README..."(,但我找不到页面是否以及链接的位置(我希望在模块的"详细说明"中看到它,就像如果我在放置"@includedoc"指令的地方内联一些文档。

我的一个模块的片段是:

/**
* @file coro.h
* @brief definition of coroutine implementing functions.
*
* @date: Feb 8, 2018
* @author: myself
*
* @defgroup coro "Coroutine implementation in plain 'C'."
*
* @includedoc mcu_noitr/coro/README.md
* @{
*
*/

我做错了什么?

注意:我也有点令人惊讶,我需要将整个路径放在我的Doxyfile所在的位置,否则 doxygen 即使它就在包含@includedoc命令的文件旁边也不会找到它。

我还遇到了一个问题,即通过includedocinclude{doc}包含带有 Markdown 格式文本的文件不会导致正确解释的 Markdown。请注意,我包含了来自其他Markdown 文件的 Markdown 文件。我的解决方法是在 Markdown 文件上使用 C 预处理器 (cpp( - 这是广泛使用的 - 并使用它的#include指令。当然,您可以使用真正的通用文本处理器,如 cpp 手册页中建议的 M4。在 Doxyfile 中将FILTER_PATTERNS设置为:

FILTER_PATTERNS = *.md="cpp -P -traditional-cpp"

您需要-P选项来避免它输出行标记,这会混淆Doxygen。 需要-traditional-cpp来避免CPP吃空白,这对于正确解释Markdown很重要。不要使用单引号,因为当 Doxygen 通过sh调用cpp时,这会导致错误。

然后在我的 Markdown 主页中:

Main Page {#mainpage}
==========
Blah blah blah.
#include "other.md"

使用FILTER_PATTERNS而不是INPUT_FILTER可以避免不允许添加或删除行的问题。

我将我的降价文件放在同一个目录中,我猜如果它们位于不同的地方,您可以通过-I告诉 cpp,这将满足您对包含您提交的问题的路径的期望。

目前,doxygen 没有考虑像includedoc这样的命令可以包含 markdown 代码的事实。目前,唯一的可能性是编写一个过滤器,请参阅doxygen配置文件中的配置parateterINPUT_FILTER(未测试!(将\includeoc'替换为该文件的代码。

最新更新