Earlier quoted context omitted.
I feel like you do not understand the concept of static linking, because the entire point is that you don't need a bunch of ifdefs, since you target exactly the version you develop against and ship with it.
The problem is services and non-ABI/non-library APIs. The way I suspect that this is set up is that there is precisely one KDE widget displayer service at any given time, running as part of the desktop environment and presenting an IPC interface that widgets talk to to get themselves added to the widget display area that the window manager maintains. You can link statically to the KDE widget client libraries all you…
> with the ABI changing every year for no reason and yet having to support users having all kind of version combinations.
To which I originally replied. And my point here still stands. I'm not arguing about the backwards or forward compatibility of every single library that might or might not use an IPC mechanism to talk to another component which could break if they're different versions.