本文介绍如何利用CMake的–graphviz选项生成.dot文件,再通过graphviz的dot工具将其转换为PNG图片,以直观展示CMake项目的构建依赖关系
安装及生成
首先安装graphviz
sudo apt install graphviz
其次进入项目build目录(会生成很多其他文件)
cmake ../ --graphviz=project_name.dot
dot -Tpng project_name.dot -o project_name.png
可以在cmake中写入如下代码自动生成目标依赖关系图
add_custom_target(graphviz ALL
COMMAND ${CMAKE_COMMAND}"--graphviz=foo.dot" .
COMMAND dot -Tpng foo.dot -o foo.png
WORKING_DIRECTORY"${CMAKE_BINARY_DIR}"
)
实战演示
这是我自己的一个项目,首先生成一个tinyrpc静态库,库中链接了许多第三方库,在又有三个可执行程序链接tinyrpc静态库,生成目标依赖图如下,可以看出是完全符合预想的




目标依赖图图像形状意义解析
| 形状 | 文件类型 |
|---|---|
| 椭圆形(Executable) | 可执行程序 |
| 八边形(Static Library) | 静态库 |
| 双层八边形(Shared Library) | 共享库 |
| 三层八边形(Module Library) | 模块库 |
| 矩形(Custom Target) | 自定义目标 |
| 五边形(Interface Library) | 接口库 |
| 六边形(Object Library) | 对象库 |
| 七边形(Unknown Library) | 第三方库 |
5997

被折叠的 条评论
为什么被折叠?



