2 ms·
Header only and single file are slightly different. A headery library may include many many files. A single file or single header may be “header only” or it may
by forrestthewoods 7y ago
Header only and single file are slightly different. A headery library may include many many files. A single file or single header may be “header only” or it may have an impl define. People who prefer this distribution mechanism are generally ok with 1 header plus 1 cpp.
These libraries generally have no third party dependencies. Because tracking down and compiling C++ dependencies is a dumpster fire.
- asveikau 7y agoOr maybe they don't actually need the dependencies. There is a style of writing code to minimize dependencies and many people value this. I would take the sqlite amalgamation as an example of good use of "few files, few dependencies". First off, it is above all a solid piece of work. It is distributed with one header file and one .c, even though it is developed as multiple files. Iirc the sqlite website cites a ~10% speed improvement or so due to the optimizer being able to do a better job across the whole library. In my opinion this is a better reason than "tracking dependencies sucks" or "omg too many files".
- mratsim 7y agoI'm pretty sure it's the (lack of) package managers. The presence of a defacto package manager completely changes the library dynamics. I can't even link and test properly against GMP on Windows :/
- asveikau 7y agoSigh. Keeping sqlite as an example. On most Unix-like OSs (and even windows now) there is a dynamically linked sqlite managed by a package manager. It also predates the time period when people would whine about a lack of package managers. As do a bunch of these libraries.