Просто создайте файл «перевода» для вашего проекта. В основном это будет файл .c, .cpp, .m и т. Д., Содержащий заголовки, которые вы хотите проиндексировать.
Основная проблема заключается в том, что Xcode действительно не имеет достаточного контекста для индексации мира (или любого файла, к которому он обращается). Неправильное представление индекса в заголовке. Это может показаться глупым, но когда вы думаете об этом, это имеет смысл, потому что у каждой цели свои настройки сборки, и в единственном переводе они не будут применены правильно.
Xcode 4.0 сделал это так, как вы хотите (в основном, все было проиндексировано на основе настроек сборки текущего проекта), но это было ошибочно и совершенно непригодно для нетривиальных проектов и особенно проектов, которые имели разные настройки сборки. Например: он будет применять заголовок префикса к неправильному проекту или не будет знать, как правильно построить граф включения, чтобы он просто генерировал ошибки по всему заголовку (в некоторых случаях).
Одним из полезных побочных эффектов является то, что ваш файл перевода можно использовать для быстрой неформальной проверки файлов, которые вы включили, прежде чем приступить к полной сборке. У меня фактически есть файлы перевода в библиотеках для этой цели (и для проверки правильности зависимостей / включений).
Если вам действительно не нравится файл перевода, вы можете вернуться к Xcode 4.0 или попробовать Maclan для clang_complete.