XCode 4: Статический анализ заголовочных файлов - PullRequest
1 голос
/ 26 октября 2011

У меня есть проект C ++ (стиль GNU, с Makefile), и я хотел бы использовать XCode в качестве своей IDE, поскольку я хотел бы использовать функциональность Clang для автозаполнения и обнаружения проблем в режиме реального времени.

Для этого я создал Новый проект -> Инструмент командной строки, а затем просто импортировал все мои файлы.Если я продолжу и отредактирую файл .cpp, XCode обнаруживает проблемы в реальном времени (выдает ошибку, если я пишу фиктивный код).Тем не менее, то же самое не работает для моих файлов .h.Интересно, что это работает, если я #include эти файлы заголовков в одном из моих файлов .cpp.

Как я могу решить эту проблему, без необходимости включать файлы заголовков из исходных файлов?Кроме того, я не уверен, что этот способ создания проекта (инструмент командной строки) является правильным.Я действительно хочу использовать XCode только для автозаполнения и обнаружения проблем, я не хочу собирать его через XCode (достаточно просто запустить "make").

1 Ответ

1 голос
/ 26 октября 2011

Просто создайте файл «перевода» для вашего проекта. В основном это будет файл .c, .cpp, .m и т. Д., Содержащий заголовки, которые вы хотите проиндексировать.

Основная проблема заключается в том, что Xcode действительно не имеет достаточного контекста для индексации мира (или любого файла, к которому он обращается). Неправильное представление индекса в заголовке. Это может показаться глупым, но когда вы думаете об этом, это имеет смысл, потому что у каждой цели свои настройки сборки, и в единственном переводе они не будут применены правильно.

Xcode 4.0 сделал это так, как вы хотите (в основном, все было проиндексировано на основе настроек сборки текущего проекта), но это было ошибочно и совершенно непригодно для нетривиальных проектов и особенно проектов, которые имели разные настройки сборки. Например: он будет применять заголовок префикса к неправильному проекту или не будет знать, как правильно построить граф включения, чтобы он просто генерировал ошибки по всему заголовку (в некоторых случаях).

Одним из полезных побочных эффектов является то, что ваш файл перевода можно использовать для быстрой неформальной проверки файлов, которые вы включили, прежде чем приступить к полной сборке. У меня фактически есть файлы перевода в библиотеках для этой цели (и для проверки правильности зависимостей / включений).

Если вам действительно не нравится файл перевода, вы можете вернуться к Xcode 4.0 или попробовать Maclan для clang_complete.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...