CMakeGraphViz选项

CMake 的内置 Graphviz 支持。

生成 Graphviz 文件

CMake 可以生成 Graphviz 文件,显示项目中目标之间的依赖关系,以及链接的外部库。

当使用 --graphviz=foo.dot 选项运行 CMake 时,它​​会产生:

  • 一个 foo.dot 文件,显示项目中的所有依赖项

  • 每个目标的 foo.dot.<target> 文件,显示它所依赖的其他目标

  • 每个目标的 foo.dot.<target>.dependers 文件,显示哪些其他目标依赖于它

可以使用 Graphviz 包中的 dot 命令将这些 .dot 文件转换为图像:

dot -Tpng -o foo.png foo.dot

在 3.10 版本加入: 不同的依赖类型 PUBLICINTERFACEPRIVATE 表示为实线、虚线和点线边缘。

特定于 Graphviz 支持的变量

生成的图表可能会很大。生成的图形的外观和内容可以使用文件“CMakeGraphVizOptions.cmake”来控制。该文件首先在 CMAKE_BINARY_DIR 中搜索,然后在 CMAKE_SOURCE_DIR 中搜索。如果找到,其中设置的变量将用于调整生成的 Graphviz 文件的选项。

GRAPHVIZ_GRAPH_NAME

图形名称。

GRAPHVIZ_GRAPH_HEADER

标头写在 Graphviz 文件的顶部。

  • 强制性:否

  • 默认值: "node [ fontsize = "12" ];"

GRAPHVIZ_NODE_PREFIX

Graphviz 文件中每个节点的前缀。

  • 强制性:否

  • 默认值: "node"

GRAPHVIZ_EXECUTABLES

设置为 FALSE 以从生成的图形中排除可执行文件。

  • 强制性:否

  • 默认值:真

GRAPHVIZ_STATIC_LIBS

设置为 FALSE 以从生成的图形中排除静态库。

  • 强制性:否

  • 默认值:真

GRAPHVIZ_SHARED_LIBS

设置为 FALSE 以从生成的图形中排除共享库。

  • 强制性:否

  • 默认值:真

GRAPHVIZ_MODULE_LIBS

设置为 FALSE 以从生成的图形中排除模块库。

  • 强制性:否

  • 默认值:真

GRAPHVIZ_INTERFACE_LIBS

设置为 FALSE 以从生成的图形中排除接口库。

  • 强制性:否

  • 默认值:真

GRAPHVIZ_OBJECT_LIBS

设置为 FALSE 以从生成的图形中排除对象库。

  • 强制性:否

  • 默认值:真

GRAPHVIZ_UNKNOWN_LIBS

设置为 FALSE 以从生成的图形中排除未知库。

  • 强制性:否

  • 默认值:真

GRAPHVIZ_EXTERNAL_LIBS

设置为 FALSE 以从生成的图形中排除外部库。

  • 强制性:否

  • 默认值:真

GRAPHVIZ_CUSTOM_TARGETS

设置为 TRUE 以在生成的图形中包含自定义目标。

  • 强制性:否

  • 默认值:假

GRAPHVIZ_IGNORE_TARGETS

要从生成的图形中排除的目标名称的正则表达式列表。

  • 强制性:否

  • 默认值:空

GRAPHVIZ_GENERATE_PER_TARGET

设置为 FALSE 不生成每个目标图 foo.dot.<target>

  • 强制性:否

  • 默认值:真

GRAPHVIZ_GENERATE_DEPENDERS

设置为 FALSE 不生成依赖图``foo.dot.<target>.dependers``。

  • 强制性:否

  • 默认值:真