我有一个相当复杂的项目,我想用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
命令。
答案 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 }}。