We do something similar. We have a number of different processor
cores to support. In general we've been able to pull out the features
from the hardware specific bits to make the two effectively
orthogonal. So in our IDE we let users choose a system chip type,
separate from a SDK version. CDT then 'magically' pulls in the
correct include/library/pre-proc defines for the combination of chip +
sdk_ver. They can select which SDK features they final program
they're building wants, which translates to linking against the
various libraries.
If you can split the problem along these lines then you may be able to
avoid the nightmare of a large matrix containing every possible
combination of feature and platform. Apart from anything else, if you
can model it as CDT configurations then the indexer, code navigation,
etc. have a hope of working.
Another thing you can do is modularize the software and put the
orthogonal parts in different CDT projects with references between the
configurations. We've scaled this to an 80 project, project set now
(and with the upcoming build configuration platform improvements) it
performs really well.