Assuming ...
Code:
$ tree -d proj
proj
├── bin
├── contrib
├── doc
├── include
│** ├── dirA
│** └── dirB
├── lib
├── share
└── src
If it were me, I'd use -I include/ and assume the PWD was the project top and let the makefile determine the real top directory at build time. Then inside my code, the headers would be
Code:
#include "dirA/donbass.h"
#include "dirB/donesk.h"
But that's me. Lots of reasons for this, but non-professionals are usually struggling with other coding issues so making a great makefile/Cmakefile that does lots and lots of things automatically isn't normal.