CMakeGraphVizOptions¶
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 版中新增: 使用实线、虚线和点线分别表示不同的依赖关系类型 PUBLIC
、INTERFACE
和 PRIVATE
。
Graphviz 支持专用的变量¶
生成的大量内容可能很大。可以在 CMakeGraphVizOptions.cmake
文件中控制生成内容的外观和内容。首先在 CMAKE_BINARY_DIR
,然后在 CMAKE_SOURCE_DIR
中搜索此文件。如果找到,则利用其中设置的变量调整生成的 Graphviz 文件的选项。
- GRAPHVIZ_GRAPH_NAME¶
图表的名称。
必须:否
默认:
CMAKE_PROJECT_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