Two days ago I was in Hamburg on a conference, where I visited the Miniature Wonderland. One of rooms has a miniature 'functioning' airport with planes taxiing etc. In one place near the hangars I noticed a small RV with wings with a small figure fueling it presumably.
I immediately knew I knew it from somewhere, but couldn't figure it out - only after about 20 minutes it hit me - Spaceballs!
If you've ever tried to use any Clang-based tooling such as clangd, ccls, clang-tidy, include-what-you-use and many others, you probably had to figure out yourself how to generate the compilation database within your setup.
This post describes my attempt to generate compile_commands.json database from as many C/C++ build systems as possible (I've managed 17 + plugins). For each build system you can find steps how to setup the same reference Hello World C++17 project, generate the compile_commands.json and verify whether it works with clang-tidy and discusses issues (if any) and how to resolve them.
The list of build systems covered in the post include: B2, Bazel, Buck2, build2, CMake, Clang++, FASTBuild, Make, Meson Build, MSVC, Ninja, Premake, Qbs, SCons, Waf, XCode and xmake.
However, the main difference between clang-uml and Doxygen is that in Doxygen the diagrams are a by-product of generated documentation. clang-uml aims to give you much more control over what you want in your diagrams, without having to use Doxygen or any other documentation tool, which possibly makes it more flexible in how you can use its output.
Obviously, which approach you prefer depends on your use case and needs.
I immediately knew I knew it from somewhere, but couldn't figure it out - only after about 20 minutes it hit me - Spaceballs!