Недавно я установил YouCompleteMe
и я новый пользователь в нем. Я прочитал инструкцию по установке по этой ссылке: http://valloric.github.io/YouCompleteMe. Теперь я могу использовать его для python и т.д., Но я не могу использовать его для C. Я не понимаю, что означает это предложение по ссылке: "forget that if you want the C-family semantic completion engine to work, you will need to provide the compilation flags for your project to YCM."
Я прочитал руководство пользователя YCM, но не смог решить свою проблему. Tnx от любого, кто объясняет мне, что означает вышеприведенное предложение и что мне делать?
2 ответа
Я не понимаю, в чем смысл этого предложения по ссылке:«забудьте, что если вы хотите, чтобы механизм семантического завершения семейства C работал, вам нужно будет предоставить флаги компиляции для вашего проекта в YCM».
Это просто означает, что вместо компиляции
cd ~/.vim/bundle/YouCompleteMe
./install.py
Вам необходимо добавить
cd ~/.vim/bundle/YouCompleteMe
./install.py --clang-completer
Я думаю, что инструкции по установке обновляются в любом случае, чтобы отразить вышесказанное.
Вам нужно иметь файл с именем .ycm_extra_conf.py в каталоге, содержащем исходный код проекта. Эта ссылка на файл примера, поставляемый с плагином, и вы должны обновить его, чтобы правильно описать параметры компиляции.
Я обычно создаю один (или несколько) для проекта и помещаю их вместе с проектом в любую используемую мной scm-программу.
Пара вещей, на которые стоит обратить внимание:
Если вы привыкли к gcc, есть некоторые флаги компиляции, которые clang (что использует YCM) не поддерживает.
Если вы компилируете код ядра Linux (драйвер и т.д.), Он не будет работать должным образом, поскольку clang не поддерживает многие макросы сборки, предоставляемые gcc. Я не знаю об обходном пути.
Дополнительная информация от разработчика:
Семантическое завершение C-семейства
YCM ищет файл .ycm_extra_conf.py в каталоге открытого файла или в любом каталоге над ним в иерархии (рекурсивно); когда файл найден, он загружается (только один раз!) как модуль Python. YCM вызывает метод FlagsForFile в этом модуле, который должен предоставить ему информацию, необходимую для компиляции текущего файла. Вы также можете указать путь к глобальному файлу .ycm_extra_conf.py, который будет использоваться в качестве запасного варианта. Чтобы предотвратить выполнение вредоносного кода из файла, который вы не написали, YCM один раз спросит вас о .ycm_extra_conf.py, безопасно ли загружаться. Это может быть отключено, и вы можете белый / черный список файлов. Смотрите раздел «Параметры» для более подробной информации.
См. Собственный YCM .ycm_extra_conf.py для деталей о том, как это работает. Вы должны быть в состоянии использовать его в качестве отправной точки. Не просто скопируйте / вставьте этот файл куда-нибудь и ожидайте, что все будет работать волшебным образом; Вашему проекту нужны разные флаги. Подсказка: просто замените строки в переменной flags на флаги компиляции, необходимые для вашего проекта. Этого должно быть достаточно для 99% проектов.
Если вы изменили и добавили этот файл в свой проект (или указали путь к нему), вы не получите то же сообщение об ошибке, что и в исходном вопросе. Если вы это сделаете, YCM не сможет его увидеть - возможно, неправильно назван (ведущий.) Или нет на нужном уровне в исходной иерархии - см. Ссылку выше.
В противном случае, если он все еще не работает, у вас должно появиться другое сообщение об ошибке; опубликовать это. Первоначальная конфигурация YCM требует некоторой работы и в первый раз сделала несколько попыток изучить их документацию.