> A few of the downsides have already been mentioned, but there was one big upside in that there was an amalgamated version of the library that put the entire library into one cpp file and one header file. It made building and distributing applications so simple compared to a lot of other cross platform libraries.
That's a genius idea. I wish all c++ libraries have that. I can't, just off the top of my hat, see a single downside.
SQLite also has an amalgamated distribution for easier embedding.
The only gotcha I've seen with this method is when the debugger (Visual Studio in this case) can't handle more than 32768 (or was it 65536) lines. Usually the work around is to furthermore split into several, not one amalgamated versions.
Game developers love libraries coming this way, since using them right away is much easier, and often there is only one thing being shipped (the game exe).
Link times are super slow, visual studo couldn't handle debugging a file with over 64k lines. But it's wasn't a big deal, since I'd develop with the normal library and distribute with the amalgated library. Juce seems to have gone away from the amalgated system for the entire library, and instead each module (core GUI etc) use a similar system. Not quite as slick anymore.
SQLite has had this capability for about 10 years. It's also be the default distribution, those most embedders I know choose to rebuild with the configuration options tuned the way they need them.
That's a genius idea. I wish all c++ libraries have that. I can't, just off the top of my hat, see a single downside.