| # 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 <https://www.graphviz.org/>`_ 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.<target>`` file for each target, showing on which other targets |
| it depends |
| * a ``foo.dot.<target>.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.<target>``. |
| |
| * Mandatory: NO |
| * Default: TRUE |
| |
| .. variable:: GRAPHVIZ_GENERATE_DEPENDERS |
| |
| Set to FALSE to not generate depender graphs ``foo.dot.<target>.dependers``. |
| |
| * Mandatory: NO |
| * Default: TRUE |
| #]=======================================================================] |