
On 02/21/2012 08:17 AM, Rene Rivera wrote:
More then that, consider build systems that should stat 103 files for each cpp file compiled.
That thought did cross my mind when deciding on the header structure. But, given how many compilers support some form of precompiled inclusion I decided that it was OK to go with the modular arrangement. Especially for the much easier maintainability of the library. One option I can think of is to provide a single concatenated header that is generated from the current modular headers. This, of course is a bit more work on the library side, and is considerably harder for users to humanly understand one big concatenated header file. Hence this is something that I would seriously consider adjusting if the number of headers becomes a real measurable problem. Which also suggests that I should add some header parsing performance tests.
Bryce Lelbach did a similar library to yours: <https://github.com/brycelelbach/detect> It only contains 4 short files + 1 file to include them all and is perfectly maintainable. If you cut the line explicitly between mutually-exclusive macros and others that are not, then this structure works very well. To me it doesn't make sense if the library has more than 10 files. It is a sign there is a big design and scalability problem there.