CMakeGraphVizOptions

CMake 的内置 Graphviz 支持。

生成 Graphviz 文件

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

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

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

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

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

这些 .dot 文件可以使用 Graphviz 包中的 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 以从生成的图形中排除可执行文件。

  • 必需: 否

  • 默认值: TRUE

GRAPHVIZ_STATIC_LIBS

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

  • 必需: 否

  • 默认值: TRUE

GRAPHVIZ_SHARED_LIBS

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

  • 必需: 否

  • 默认值: TRUE

GRAPHVIZ_MODULE_LIBS

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

  • 必需: 否

  • 默认值: TRUE

GRAPHVIZ_INTERFACE_LIBS

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

  • 必需: 否

  • 默认值: TRUE

GRAPHVIZ_OBJECT_LIBS

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

  • 必需: 否

  • 默认值: TRUE

GRAPHVIZ_UNKNOWN_LIBS

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

  • 必需: 否

  • 默认值: TRUE

GRAPHVIZ_EXTERNAL_LIBS

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

  • 必需: 否

  • 默认值: TRUE

GRAPHVIZ_CUSTOM_TARGETS

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

  • 必需: 否

  • 默认值: FALSE

GRAPHVIZ_IGNORE_TARGETS

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

  • 必需: 否

  • 默认值: empty

GRAPHVIZ_GENERATE_PER_TARGET

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

  • 必需: 否

  • 默认值: TRUE

GRAPHVIZ_GENERATE_DEPENDERS

设置为 FALSE 以不生成依赖关系图 foo.dot.<target>.dependers

  • 必需: 否

  • 默认值: TRUE