【发布时间】:2018-10-15 09:27:30
【问题描述】:
我正在使用 Doxygen 来获取 c/c++ 项目的整个函数调用图。我设置了HAVE_DOT = YES 和CALL_GRAPH = YES。它可以帮助获得正确的结果,但对于大型项目,使用 dot 生成 PNG 将花费大量时间。我想获得一个没有 PNG 的文本结果以避免耗时。但我不知道如何配置。在不生成 PNG 的情况下获取 .DOT 文件将是完美的。
【问题讨论】:
我正在使用 Doxygen 来获取 c/c++ 项目的整个函数调用图。我设置了HAVE_DOT = YES 和CALL_GRAPH = YES。它可以帮助获得正确的结果,但对于大型项目,使用 dot 生成 PNG 将花费大量时间。我想获得一个没有 PNG 的文本结果以避免耗时。但我不知道如何配置。在不生成 PNG 的情况下获取 .DOT 文件将是完美的。
【问题讨论】:
对于图形表示,doxygen 具有 CALL_GRAPH、CALLER_GRAPH 以及 HAVE_DOT 配置设置。
对于文本表示,有设置:REFERENCED_BY_RELATION 和 REFERENCES_RELATION,这些设置会产生每个函数的结果。
来自 OP 的评论:
但这只是帮助我了解函数中调用了哪些实体。一世 无法获取项目的整个调用图。
和
我想要的是在不生成 PNG 的情况下在文本图中获取函数调用图,例如 .DOT。
这不是 doxygen 直接支持的。完成某事有一个卑鄙的技巧:
HAVE_DOT 设置为YES
CALL_GRAPH 设置为NO
\callgraph
DOT_CLEANUP 设置为NO
DOT_PATH 设置为dot 可执行文件不驻留的路径DOT_GRAPH_MAX_NODES 设置为适当的值MAX_DOT_GRAPH_DEPTH 设置为适当的值这将产生一个dot 文件(在例如 html 目录中),其中包含所请求的关系。
【讨论】:
REFERENCES_RELATION = YES。但这只是帮助我了解函数中调用了哪些实体。我无法获得项目的整个调用图。
REFER... 确实只是在函数基础上执行此操作(因此直接调用/由关系调用,1 深)。这个额外的“全图”部分在问题中不清楚,请将此信息添加到问题中。
您可以查看以下手册: http://www.doxygen.nl/manual/diagrams.html
设置CALL_GRAPH = NO 可能会起作用,因为它不会创建图形表示。
看看手册中\hidecallgraph和\callgraph的用法。
【讨论】:
\hidecall... 来禁用单个图形。
CALL_GRAPH 时没有文本表示,图形的正常文本表示在.dot 文件中,在这种情况下不会生成此文件。 REFER... 设置在 HTML, LaTeX`, ... 输出中生成文本表示。
.DOT,而不生成 PNG。