1

我正在尝试使用外部Mscgen实用程序 绘制与Doxygen的交互图。

这是源文件:

/// test.h

/** Interaction diagram.
 * Test.
 *  \msc "Test interaction diagram"
 *      A,B,C;
 *      B->C;
 *      A<-B;
 *  \endmsc
*/

class A {};

class B {};

class C {};

我安装了mscgen.exe可执行文件,并在环境变量中设置了它的路径。

运行 Doxygen 时,我从它的日志中得到与交互图相关的所有信息:“正在搜索 msc 文件......”。

最终的 Doxygen 输出包含缺少交互图的占位符,以及“测试交互图”标签。

我一定在 Doxyfile 文件中遗漏了一些东西。如何让 Doxygen 调用mscgen.exe可执行文件?

查看生成的 PNG 文件,Doxygen 正在寻找的文件丢失了,所以我想mscgen.exe根本没有运行。

这是 Doxygen 生成的 HTML 代码块:

<div align="center">
<img src="../../msc_inline_mscgraph_1.png" alt="msc_inline_mscgraph_1" border="0" usemap="#msc_inline_mscgraph_1.map">
<map name="msc_inline_mscgraph_1.map" id="msc_inline_mscgraph_1.map"></map>
<div class="caption">
Test interaction diagram</div>
</div>
4

2 回答 2

1

尝试删除标题。我在 Windows 上也有同样的问题。我没有其他方便的平台来比较结果并查看它是否是仅限 Windows 的问题。当我做:

@msc "hello, world"
   a, b;
   a => b;
@endmsc

该图不生成。如果我删除标题,如下所示:

@msc
   a, b;
   a => b;
@endmsc

该图生成,但没有标题。当标题出现时,我看到错误:

错误:未能打开地图文件path-on-my-local-computer- redacted /docs/html/inline_mscgraph_2.msc.map 以包含在文档中!

有趣的是,当没有标题时也不会生成文件——不同之处在于 Doxygen 似乎并不关心地图文件不存在。我没有看到控制地图文件生成的明显选项。

抱歉,在原始问题几个月后仅提供部分答案。我到这里谷歌搜索相同问题的答案,并希望这至少能让其他人获得没有标题的序列图。

于 2015-04-20T19:42:15.587 回答
1

我遇到了完全相同的问题,发现原因是 msc 部分中的语法错误。一旦我没有错误,一切都会很好。

我需要一段时间才能确定问题所在。搜索将我带到一个人的线程“ msc graph 问题”,他有同样的问题和解决方案:

[...] 如果 msc 标签中存在语法错误,那么在生成运行结束时,我会收到以下错误消息:

错误:无法打开地图文件 [...]

于 2015-08-26T17:13:15.573 回答