1

I've been moving most of my development to Linux for the past 2 years. One of the things I haven't figured out how to migrate yet is drawing assembly dependencies for C++ projects. In Visual Studio 2013 this is a matter of a couple of mouse-clicks.

Can I trick dot or graphviz into doing the drawing for me by hooking them into the build chain? Or should I use stand-alone software taking my source files and drawing them up?

Must haves:

  • Runs on Ubuntu.
  • The configurable depth of drawing.
  • Able to handle multiple layers of .cpp and .hpp files.

Nice to have:

  • Export to multiple file types including SVG
  • Read CMake files as input
  • Support for multiple languages (for example, Python)

Of course, if it can somehow render an interactive view that would be even better.

If it's worth the money pricing is not the main issue and does not need to be considered for this question.

1 Answer 1

1

The answer to your question is to use doxygen to parse your code and get it to produce, via GraphViz dot tool, any diagrams that you need.

  • Parse Multiple Layers of C++ - Yes
  • Multiple Code Languages - Yes C, C++, Python, Fortran, VHDL, PHO, Java
  • Include in the Build Process - Yes
  • Wizard for generating configs but then callable from the command line, (or makefile, build script, etc.)
  • Linux - Yes It is cross platform
  • Price - Free, Gratis & Open Source
  • Can also generate your documentation, from the code, in a number of formats - HTML (with optional search, .chm ready, nav panel), LaTeX, man, RTF, XML, DocBook.
  • Lots of control over which diagrams are generated.

doxygen GUI frontend

1
  • That definitely looks promising, although admittedly it also looks like a lot of work to get started. I'll definitely give it a shot.
    – Mast
    Jan 3, 2016 at 14:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.