- How do you organise your engine in the file system so that you can easily generate a copy of the source files required by the end user?
- Do you prefer to use abstract interfaces for everything or do you export full classes and use PImpl idiom to hide implementation details and reduce virtual calls?
Currently my file system is arranged so that folders represent modules of the engine. IE.
EngineName -> Source -> Platform -> .h/.cpp -> IO -> Gfx
However, at the moment it would be a manual process to go through each module and copy out appropriate headers into a replicate folder structure for use by the end user in their project. I'd like to find an automated way of doing this
I've been going down the track of exporting classes and using PImpl's but this does kind of make the engine code a little ugly-er and not as straight forward so I was questioning whether to go to abstract classes at the cost of potentially having a somewhat duplicate abstract interface for everything needed by the end user and suffering from virtuals.
Your thoughts and experience?