Раскраска синтаксиса Xcode в файлах .mm - PullRequest
1 голос
/ 06 декабря 2011

Я пытался отладить эту проблему уже несколько недель, и я достиг нулевого прогресса. В одном из моих проектов мои .mm-файлы больше не имеют правильной синтаксической окраски, за исключением таких вещей, как @property, @synthesize и примитивных типов, таких как BOOL, int, double и т. Д. Файлы .cpp хороши. Я пробовал почти все «исправления», которые я мог найти в Интернете. Я:

  1. Удалены «Производные данные» для проекта в Организаторе.
  2. Щелкните правой кнопкой мыши файл .xcodeproject проекта в Finder, выберите «Показать содержимое пакета» и удалите все файлы, кроме .pbxproj.
  3. Продукт> Чистый
  4. Перепутан с помощью Редактора> Параметры окраски синтаксиса.
  5. Убедитесь, что все мои пути поиска по заголовкам используют префикс '$ (SRCROOT) /'.
  6. Гарантировал, что все файлы заголовков, которые будут импортированы из этих путей, были импортированы:

    #import <header.h>
    

вместо:

    #import "header.h"

Я чувствую, что у меня нет выбора. У кого-нибудь еще есть исправление, отличное от того, что я уже пробовал сотни раз? Отсутствие правильной окраски синтаксиса сводит меня с ума.

Спасибо.

РЕДАКТИРОВАТЬ: Забыл упомянуть, я также посмотрел журнал в Console.app и увидел это:

12/5/11 15:08:08 PM Xcode [7623] [? T] IDEIndexingClangInvocation: не удалось сохранить файл PCH: / Users / jinser / Библиотека / Разработчик / Xcode / DerivedData / ABBYY_MenuApp-ezwvcbulelfqwkftuwttlogvcompcomp_окомпьютер /OpenCV_iPhone_Prefix-bqbegypvoktytjhgrfdzxrzeamix_ast/OpenCV_iPhone_Prefix.pch.pth

Ответы [ 2 ]

3 голосов
/ 06 декабря 2011

Вы когда-нибудь изменяли свой файл .pch?Если у вас есть файл .pch, который не совсем корректен, это может нарушить работу индексатора.Например, если вы используете #import "header.h" там, где вам действительно нужно #import <EmbeddedFramework/header.h>, это на самом деле прекрасно скомпилируется в обычных файлах (при условии, что ваши пути поиска в заголовке настроены на поиск header.h), но, если они присутствуют в .pch,он сломает индексатор, так как он не совсем корректен.

Попробуйте удалить содержимое вашего файла .pch, затем удалите все DerivedData и дайте Xcode переиндексировать.Если сейчас все правильно, вы знаете, что ваш .pch был проблемой.

2 голосов
/ 14 декабря 2011

Используя совет Кевина Балларда, я изменил свой файл .pch из этого:

#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <opencv/cv.h>
#endif

до:

#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <opencv/cv.h>
#endif

В Finder я также удалил соответствующую папку «Производные данные», выбрав имя пользователя / Библиотека / Разработчик / Xcode / DerivedData.

Вуаля - синтаксис теперь окрашен правильно. Мое безумие наконец стихает.

РЕДАКТИРОВАТЬ (10 дней спустя): Я добавлю, однако, что это не всегда работает. Мой смысл кода снова нарушен, и выполнение этих шагов не исправляет его. Кажется, что каждый случай уникален, и вам приходится тратить часы своего времени, пытаясь решить проблему всякий раз, когда это происходит. Надеемся, что в будущем Apple сможет сделать Xcode более устойчивым к этим ошибкам.

...