Doxygen:如何包含降价页面以记录组

时间:2018-08-31 17:11:13

标签: 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命令。

2 个答案:

答案 0 :(得分:0)

目前,doxygen还没有考虑到\includedoc之类的命令可以包含降价代码的事实。目前唯一的可能是编写过滤器,请参阅doxygen配置文件中的配置参数INPUT_FILTER(未经测试!),用该文件的代码替换\ includedoc`。

答案 1 :(得分:0)

我还遇到了一个问题,即通过$('input, textarea')\includedoc包含Markdown格式文本的文件不会导致正确解释Markdown。请注意,我包括了来自 other Markdown文件的Markdown文件。我的变通办法是在Markdown文件上使用C预处理器(cpp)(广泛使用),并使用其\include{doc}指令。您当然可以使用cpp手册页中建议的真正的通用文本处理器,例如M4。在Doxyfile中将#include设置为:

FILTER_PATTERNS

您需要使用FILTER_PATTERNS = *.md="cpp -P -traditional-cpp" 选项来避免输出行标记,这会混淆Doxygen。需要-P来避免cpp占用空白,这对于正确解释Markdown至关重要。不要使用单引号,因为当Doxygen通过-traditional-cpp调用cpp时会导致错误。

然后在我的Markdown主页中:

sh

使用Main Page {#mainpage} ========== Blah blah blah. #include "other.md" 而不是FILTER_PATTERNS避免了不允许添加或删除行的问题。

我的markdown文件位于同一目录中,我猜想如果它们位于不同的位置,则可以通过INPUT_FILTER告诉cpp关于它的信息,这可以满足您对{{3 }}。