#define CANVAS_ITY_IMPLEMENTATION #define CANVAS_ITY_IMPLEMENTATIONA true header-only library should be build-system agnostic and this is one way to do that.
We can argue about build systems for C++ all day long and never come to an agreement. With this approach this piece of code can be used anywhere.
When C and C++ were the main programming languages during the 1990's, and commercial compilers abounded strangely we could manage handling all those build systems approaches.
None of that happens with a single file C++ library.
There isn't a single build system without issues, other than siloed languages without language standards.
Header libraries only started to be a thing when scripting generation educated in Python and Ruby during the 2010's turned into compiled languages.
And if you're going to point out Go or Rust, it kind of works as long, nothing else is used, and they don't need to interact with platform SDKs.
You can take multiple single file libraries and put them into one compilation unit. Then you have minimal files and minimal compilation units. Compilation is faster, everything is simpler.
I'm talking about real pragmatic benefits and you're making some vague hand wavy judgement without any tangible explanation.