Now my question is: Is this the best practice for placing application includes that are not part of the public API of the code? (I am using CMake, so I don't want to dump stuff in include/project-name since those includes will be installed in CMAKE_INSTALL_PREFIX/include.
What sort of structure do you guys use when you have to separate application level and library level (or private and public) includes?
If there's a single project in the repository (defining "project" as a set of sources that produce a single executable), I don't even bother with structuring internal inclusion. Files just directly include whatever they need wherever it is. This does mean that sometimes I'll get directives like #include "../foo/bar.h" , though.
If there's multiple projects in the same directory and they need to share some code, I'll usually put that in /common, following the same structure as above. As a rule, though, the stuff in /common cannot depend on anything outside of /common.