Sit with a sheet of paper and decide your library architecture.
A library should be designed as a set of levels.
- A library at level A (basic) should have dependencies only on system libraries and only if it should be in libraries at level A.
- A library at level B may have dependencies on libraries at level A and system libararies, and only if it should be in libraries at level B.
- etc.
Each library should present complete work at a certain level. Things at a lower level usually have smaller jobs, but there are many. A library at a higher level should present the complete task. those. do not have lib for windows objects and lib for events. At this level, manual interaction with the window is set here (this includes interaction with events).
It seems you have identified some resonant functional groups. The only thing a little suspicious is io. If you really have common IO routines that provide real functionality. But if this is just an IO grouping for a bunch of different objects, then I would refuse it (it all depends on usage).
So, the next step is to determine the relationship between them.
Regarding the use of directory structures. Usually everything in one directory will be present in the same library, but this does not exclude the possibility of displaying other directories. I would not put half of the classes in a directory in libA, and the other half of classes in libB, etc.
source share