Недавно я установил 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 ответа2

0

Я не понимаю, в чем смысл этого предложения по ссылке:«забудьте, что если вы хотите, чтобы механизм семантического завершения семейства C работал, вам нужно будет предоставить флаги компиляции для вашего проекта в YCM».

Это просто означает, что вместо компиляции

cd ~/.vim/bundle/YouCompleteMe ./install.py Вам необходимо добавить

cd ~/.vim/bundle/YouCompleteMe ./install.py --clang-completer

Я думаю, что инструкции по установке обновляются в любом случае, чтобы отразить вышесказанное.

0

Вам нужно иметь файл с именем .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 требует некоторой работы и в первый раз сделала несколько попыток изучить их документацию.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .