【问题标题】:How can I see the C/C++ #include graph easily? [closed]如何轻松查看 C/C++ #include 图? [关闭]
【发布时间】:2011-03-05 09:27:16
【问题描述】:

我正在寻找一种工具(最好是 Visual Studio 插件),它可以显示给定文件包含的所有文件,并显示这些文件包含的所有文件等等。

【问题讨论】:

  • 是的。我的搜索失败了。
  • @JohanKotlinski,我认为该主题仅讨论跟踪依赖关系而不是如何创建图表,这是 IMO 的一个重要区别。

标签: c++ c visual-studio include


【解决方案1】:

如果您使用的是 Visual Studio 2010,则可以使用 Microsoft 的新 Visualization and Modelling Feature Pack,它具有生成包含图的功能。不过,这只能通过 MSDN 下标获得。

【讨论】:

  • 如果它看起来像一个功能包那么有用,那么这篇文章至少应该得到 100 个赞。
  • 从截图来看,建模功能包确实看起来像一个梦想工具。但是,您不仅需要 MSDN 订阅,还需要 Premium 或 Ultimate Visual Studio 才能获得下载资格;-(
  • 而且它通常不适用于 C++ 项目。
【解决方案2】:

Doxygen,在Graphviz 的帮助下,可以做到这一点。您首先需要编辑配置文件。第一次做这件事并不容易,但之后不需要太多的编辑。

【讨论】:

  • 实际上,在大多数情况下,这很简单——要么使用 Doxygen 向导的 Windows GUI 生成它,要么从命令行运行doxygen -g 生成默认的Doxyfile,然后确保你有INCLUDE_GRAPHINCLUDED_BY_GRAPH 的值设置为 YES。然后,您可能需要运行 Doxygen 几次并检查输出以调整参数。
  • Doxygen 运行良好,windows gui 版本不需要任何配置设置,只需要项目的一些信息,但文档在安装后 2 分钟就准备好了。我让 Graphviz 创建了一个 PATH 环境变量,可能需要它,它在安装过程中请求许可。
【解决方案3】:

你可以试试这个Stack Overflow answer建议的方法:

有一个 C/C++ -> 高级项目设置“显示包含”。那 将生成树。它映射到编译器开关/showIncludes

【讨论】:

    【解决方案4】:

    首先,cinclude2dot.pl 是一个 perl 脚本,它分析 C/C++ 代码并生成 #include 依赖关系图作为点文件以输入到 graphviz。

    http://www.flourish.org/cinclude2dot/

    如果您不想走那种手动工具的道路,那么在我看来,毫无疑问的赢家是 ProFactor 称为“IncludeManager”的工具。

    http://www.profactor.co.uk/includemanager.php

    有免费试用版,非常棒。这是一个完全集成的 Visual Studio 插件,因此双击此处的内容会将您带到包含它的位置此处

    鼠标悬停工具提示为您提供所需的所有信息,它可以让您向下钻取/向上钻取、删除您不关心的整个子树、查看图表以外的表示形式、循环浏览此和那个的匹配列表,太棒了。

    如果您很快,您可以在试用期结束之前重构大型项目的#include 结构。即便如此,它的成本也不高,每个许可证大约 35 美元。

    就它的作用而言,它几乎是完美的。不仅#include 图表,还有共享文件的跨项目依赖关系,对构建时间的影响,网格中的详细属性,完美。

    【讨论】:

    • IncludeManager 看起来很容易做到,而且价格便宜。我会试一试。
    • IncludeManager 已免费发布,因为它们已停止交易。
    • cinclude2dot 对我来说是最有用的,因为它可以一次性查看文档不足的库中包含的最佳标题。使用graphviz命令~/scripts/cinclude2dot.pl | dot -Tsvg > output.svg
    【解决方案5】:

    也许不是您想要的,但 Visual Studio 编译器 (cl.exe) 有一个选项 /showIncludes,当您编译文件时会显示包含树。

    如果您想要单个文件的此信息,则可以在解决方案资源管理器中右键单击该文件,选择“属性”,然后在“命令行”部分中将 /showIncludes 添加到“附加选项”中。 (注意我使用的是 VC++ 2005,所以新版本可能会有所不同)。

    您得到的输出有点……令人费解,但它向您展示了包含的内容和顺序。

    顺便说一句,GCC 和英特尔 C++ 编译器(至少我的版本)中的相同功能是 -H

    【讨论】:

      【解决方案6】:

      http://www.codeproject.com/KB/applications/includefinder.aspx

      这不是 VS 插件,但可以作为您自己工具的入门。据我所知,它只读取 VC6 项目,较新的 VS 具有易于解析的 XML 格式。您需要的是默认包含路径,以便该工具可以找到包含的文件。或者,您可以在 GUI 中为其提供一个设置框作为用户输入。

      【讨论】:

        【解决方案7】:

        不是你喜欢的,但 doxygen 做得很好。

        【讨论】:

          猜你喜欢
          • 2014-04-26
          • 1970-01-01
          • 1970-01-01
          • 2017-11-18
          • 2011-08-28
          • 1970-01-01
          • 2012-08-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多