Thanks Mariocup. I think we might be at crossed purposes here....
In this project (which I've inherited) the header files are arranged quite unusually. For example, in the "abc" branch, the source files might be in /my/root_folder/abc/ and the corresponding headers (for some strange reason) are in /my/root_folder/abc/abc/. Similarly, the source files for the "def" branch would be in /my/root_folder/def/ and their header files would be in /my/root_folder/def/def/. Any given source file might have a #include such as #include "/abc/SomeHeader.h" - or in the def branch, it would be #include "def/SomeHeader.h".
At the moment, I'm having to put all these (dozens) of include folders into my folder search paths. Either that - or I have to modify all the #includes to include a full, absolute path.
It's obvious that this project was designed for a build environment that switches the current working directory as it builds each branch. So let's say that I'm compiling the "abc" branch. If C::B could simply select /my/root_folder/abc/ as the current working directory, the project would compile without modification. Then if I compile the "def" branch, it should select /my/root_folder/def/ as the current working directory - etc, etc.
AFAIK, most compilers do this automatically. It's quite common for the current project folder to become the current working directory, at the start of each build. I'm a bit surprised that C::B doesn't seem to be doing this but I feel sure that it must be possible.
Hope that's a bit clearer.