# Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. #[=======================================================================[.rst: CMakeGraphVizOptions -------------------- The builtin Graphviz support of CMake. Generating Graphviz files ^^^^^^^^^^^^^^^^^^^^^^^^^ CMake can generate `Graphviz `_ files showing the dependencies between the targets in a project, as well as external libraries which are linked against. When running CMake with the ``--graphviz=foo.dot`` option, it produces: * a ``foo.dot`` file, showing all dependencies in the project * a ``foo.dot.`` file for each target, showing on which other targets it depends * a ``foo.dot..dependers`` file for each target, showing which other targets depend on it Those .dot files can be converted to images using the *dot* command from the Graphviz package: .. code-block:: shell dot -Tpng -o foo.png foo.dot .. versionadded:: 3.10 The different dependency types ``PUBLIC``, ``INTERFACE`` and ``PRIVATE`` are represented as solid, dashed and dotted edges. Variables specific to the Graphviz support ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The resulting graphs can be huge. The look and content of the generated graphs can be controlled using the file ``CMakeGraphVizOptions.cmake``. This file is first searched in :variable:`CMAKE_BINARY_DIR`, and then in :variable:`CMAKE_SOURCE_DIR`. If found, the variables set in it are used to adjust options for the generated Graphviz files. .. variable:: GRAPHVIZ_GRAPH_NAME The graph name. * Mandatory: NO * Default: value of :variable:`CMAKE_PROJECT_NAME` .. variable:: GRAPHVIZ_GRAPH_HEADER The header written at the top of the Graphviz files. * Mandatory: NO * Default: "node [ fontsize = "12" ];" .. variable:: GRAPHVIZ_NODE_PREFIX The prefix for each node in the Graphviz files. * Mandatory: NO * Default: "node" .. variable:: GRAPHVIZ_EXECUTABLES Set to FALSE to exclude executables from the generated graphs. * Mandatory: NO * Default: TRUE .. variable:: GRAPHVIZ_STATIC_LIBS Set to FALSE to exclude static libraries from the generated graphs. * Mandatory: NO * Default: TRUE .. variable:: GRAPHVIZ_SHARED_LIBS Set to FALSE to exclude shared libraries from the generated graphs. * Mandatory: NO * Default: TRUE .. variable:: GRAPHVIZ_MODULE_LIBS Set to FALSE to exclude module libraries from the generated graphs. * Mandatory: NO * Default: TRUE .. variable:: GRAPHVIZ_INTERFACE_LIBS Set to FALSE to exclude interface libraries from the generated graphs. * Mandatory: NO * Default: TRUE .. variable:: GRAPHVIZ_OBJECT_LIBS Set to FALSE to exclude object libraries from the generated graphs. * Mandatory: NO * Default: TRUE .. variable:: GRAPHVIZ_UNKNOWN_LIBS Set to FALSE to exclude unknown libraries from the generated graphs. * Mandatory: NO * Default: TRUE .. variable:: GRAPHVIZ_EXTERNAL_LIBS Set to FALSE to exclude external libraries from the generated graphs. * Mandatory: NO * Default: TRUE .. variable:: GRAPHVIZ_CUSTOM_TARGETS Set to TRUE to include custom targets in the generated graphs. * Mandatory: NO * Default: FALSE .. variable:: GRAPHVIZ_IGNORE_TARGETS A list of regular expressions for names of targets to exclude from the generated graphs. * Mandatory: NO * Default: empty .. variable:: GRAPHVIZ_GENERATE_PER_TARGET Set to FALSE to not generate per-target graphs ``foo.dot.``. * Mandatory: NO * Default: TRUE .. variable:: GRAPHVIZ_GENERATE_DEPENDERS Set to FALSE to not generate depender graphs ``foo.dot..dependers``. * Mandatory: NO * Default: TRUE #]=======================================================================]