CMake:For CMake Hackers

From KitwarePublic
Revision as of 11:42, 10 August 2011 by Zack (talk | contribs) (Reverted edits by AntioneBual (talk) to last revision by Alex)
Jump to navigationJump to search

Generating Dependency Graphs with CMake

By using CMake you can automatically generate dependency graphs (dot/graphviz) of the targets in your project. This works for dependencies within the project, as well as dependencies to external libraries.


To use it, run cmake in the build tree:

cmake .

Customize graphviz output

The output can be customized with the following options in CMakeGraphVizOptions.cmake (located in base source directory)

graphviz options

  • GRAPHVIZ_GRAPH_TYPE - default: 'digraph'
  • GRAPHVIZ_GRAPH_NAME - default: 'GG'
  • GRAPHVIZ_GRAPH_HEADER - default: 'node [\n fontsize = \"12\"\n];'
  • GRAPHVIZ_NODE_PREFIX - default: 'node'

module inclusion config

  • GRAPHVIZ_EXECUTABLES - Export executables (default: ON)
  • GRAPHVIZ_STATIC_LIBS - Export static libs (default: ON)
  • GRAPHVIZ_SHARED_LIBS - Export shared libs (default: ON)
  • GRAPHVIZ_MODULE_LIBS - Export modules (default: ON)
  • GRAPHVIZ_EXTERNAL_LIBS - Export external libs (default: ON)
  • GRAPHVIZ_IGNORE_TARGETS - Do not export targets in the given list. Since 2.8.5 this supports regular expressions.
  • GRAPHVIZ_IGNORE_TARGETS_REGEX - Do not export targets which match the given regex. Not supported anymore since 2.8.5.

Example output

Dependencies within CMake:


Just CMake dependencies:

This is a graph with borders and nodes. Maybe there is an Imagemap used so the nodes may be linking to some Pages.

CMake: [Welcome | Site Map]