[CMake] CMake and Dia , colorize cmake graphviz output

Alexander Neundorf a.neundorf-work at gmx.net
Wed Sep 11 15:06:43 EDT 2013


On Wednesday 11 September 2013, Sankar P wrote:
> Hi,
> 
> Two questions.
> 
> I found the `cmake --graphviz=<somename>.out ` to be extremely useful.
> However, is it possible to generate a .dia file instead of a .out file
> ? I see that graphviz has removed support for .dia export and that is
> probably the reason why this is not working. But is there any other
> way to generate a .dia file from a CMake based project ? I ask this
> because the dot files are not edit friendly and even the lefty tool is
> very rudimentary. I will prefer to use Dia. Suppose if I am interested
> in contributing this as a patch, if it is not available, can someone
> show a pointer on where I should start looking for cmake dependency
> graph related things ?
> 
> Is it possible to colorize the CMake graphviz output ? I looked at the
> .cmake files generated by CMake in openSUSE 12.3 and I could not find
> any .cmake file that I could tweak to customize the graphviz output.
> Can someone help me understand how to colorize cmake graphviz output ?
> 
> I am not subscribed to the mails in the list. So please reply-all or
> CC me in your replies.
> 
> Thanks.

cmake 2.8.12 has some documentation for the graphviz-related options.
Maybe there is something which helps you:

$ cmake --help-module CMakeGraphVizOptions
cmake version 2.8.11.20130729-g03f4a-dirty
CMakeGraphVizOptions
  The builtin graphviz support of CMake.

  CMake can generate graphviz files, showing the dependencies between
  the targets in a project and also external libraries which are linked
  against.  When CMake is run with the --graphiz=foo option, it will produce

   * a foo.dot file showing all dependencies in the project
   * a foo.dot.<target> file for each target, file showing on which other
     targets the respective target depends
   * a foo.dot.<target>.dependers file, showing which other targets depend on
     the respective target

       

  This can result in huge graphs.  Using the file
  CMakeGraphVizOptions.cmake the look and content of the generated
  graphs can be influenced.  This file is searched first in
  ${CMAKE_BINARY_DIR} and then in ${CMAKE_SOURCE_DIR}.  If found, it is
  read and the variables set in it are used to adjust options for the
  generated graphviz files.

  GRAPHVIZ_GRAPH_TYPE - The graph type
     Mandatory : NO
     Default   : "digraph"
  GRAPHVIZ_GRAPH_NAME - The graph name.
     Mandatory : NO
     Default   : "GG"
  GRAPHVIZ_GRAPH_HEADER - The header written at the top of the graphviz file.
     Mandatory : NO
     Default   : "node [n  fontsize = "12"];"
  GRAPHVIZ_NODE_PREFIX - The prefix for each node in the graphviz file.
     Mandatory : NO
     Default   : "node"
  GRAPHVIZ_EXECUTABLES - Set this to FALSE to exclude executables from the
                         generated graphs.
     Mandatory : NO
     Default   : TRUE
  GRAPHVIZ_STATIC_LIBS - Set this to FALSE to exclude static libraries from
                         the generated graphs.
     Mandatory : NO
     Default   : TRUE
  GRAPHVIZ_SHARED_LIBS - Set this to FALSE to exclude shared libraries from
                         the generated graphs.
     Mandatory : NO
     Default   : TRUE
  GRAPHVIZ_MODULE_LIBS - Set this to FALSE to exclude module libraries from
                         the generated graphs.
     Mandatory : NO
     Default   : TRUE
  GRAPHVIZ_EXTERNAL_LIBS - Set this to FALSE to exclude external libraries
                           from the generated graphs.
     Mandatory : NO
     Default   : TRUE
  GRAPHVIZ_IGNORE_TARGETS - A list of regular expressions for ignoring
                            targets.
     Mandatory : NO
     Default   : empty



Alex


More information about the CMake mailing list