CMake graphviz自动生成

Jav*_*ado 4 dependencies graph cmake graphviz

我知道通过CLI生成CMake项目依赖关系图的常用方法:

cmake --graphviz=[file]
Run Code Online (Sandbox Code Playgroud)

但是,有没有一种方法可以通过仅在CMakeList中设置标志或命令来自动生成?这个想法是让CMakeLists.txt本身触发图的生成,而不是通过命令行来触发用户。

lan*_*tar 7

您可以在脚本中再次调用CMake,例如:

add_custom_target(graphviz ALL
                  "${CMAKE_COMMAND}" "--graphviz=foo" .
                  WORKING_DIRECTORY "${CMAKE_BINARY_DIR}")
Run Code Online (Sandbox Code Playgroud)


squ*_*les 6

您不仅可以为运行 Graphviz 创建 CMake 自定义目标,还可以更进一步,让它也使用 Dot 为您生成图像文件:

add_custom_target(graphviz ALL
    COMMAND ${CMAKE_COMMAND} "--graphviz=foo.dot" .
    COMMAND dot -Tpng foo.dot -o foo.png
    WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
)
Run Code Online (Sandbox Code Playgroud)

这样,自定义目标dot -Tpng foo.dot -o foo.png也会运行第二个命令。您可以通过预先指定foo.png您选择的路径来输出系统上任何位置的图像文件。