potatoengine / potato

Hobby C++ game engine
MIT License
38 stars 2 forks source link

Don't add public header folders as include directories #285

Closed seanmiddleditch closed 2 years ago

seanmiddleditch commented 2 years ago

Headers in public header directories must be named explicitly

Internally in library foo, you now must use #include "potato/foo/header.h" instead of just #include "header.h".

This some odd ambiguities we'd run into and have been working around.

Generated header files have well-named directories

Generated headers are all included via #include "potato/<generator>/header.h" instead of just #include "header.h".

This means that if/when we ever "install" Potato as an SDK, any generated headers distributed as part of the SDK can be safely included by SDK consumers.

Note that the latter feature isn't quite how I'd like it to be. I'd still prefer that the folders include the library name. Howevever, this exposed a limitation in SAP (or any other generated that might want to include headers from other libraries), since we can't map an import foo; back to the source library, so we can't generate the correct header path. We'll likely extend SAP to support this better in the future (https://github.com/potatoengine/sapc/issues/80)