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

一个正则表达式列表,用于指定要从生成的图中排除的目标名称。

  • 强制:否

  • 默认值:空

GRAPHVIZ_GENERATE_PER_TARGET

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

  • 强制:否

  • 默认值:TRUE

GRAPHVIZ_GENERATE_DEPENDERS

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

  • 强制:否

  • 默认值:TRUE