2014-11-30 4 views
0

Я пытаюсь заставить YCM работать в Vim для разработки на C++. Я использую структуру JUCE. Ctags и автозаполнение работают отлично. Тем не менее, я получаю много неправильных ошибок, которые появляются в «канаве» как красные стрелки.Неверные ошибки YouCompleteMe и C++

E.g.

no matching member function for call to 'addAndMakeVisible' 

когда addAndMakeVisible является функцией унаследованного класса Component и даже приходит в автозаполнения.

получает также много ошибок, как следующее:

cannot initialize object parameter of type 'juce::Component' with an expression of type 'MyComponent' 

Мои .ycm_extra_conf.py: https://gist.github.com/adamski/a793a24b026f68a1074e Я добавляю библиотеки Джюсов с абсолютным путем, а также локальной версией проекта и скопированное предложением из примера @ladislas.

Выход: YCMDebugInfo https://gist.github.com/adamski/2e7dd79b45d0fb6f5010#file-ycmdebuginfo

Текущий выход: YCMDiags https://gist.github.com/adamski/8fad8e0724a03854912b

пример хранилищу, воссоздает проблему: https://github.com/adamski/juce-chapter02-07

Мои .vimrc выглядит:

"" YouCompleteMe options 
" 
let g:ycm_register_as_syntastic_checker = 0 "default 1 
"let g:Show_diagnostics_ui = 1 "default 1 
" 
""will put icons in Vim's gutter on lines that have a diagnostic set. 
"Turning this off will also turn off the YcmErrorLine and YcmWarningLine 
""highlighting 
set tags=./tags,tags; 
set autochdir 
let g:ycm_enable_diagnostic_signs = 1 
let g:ycm_enable_diagnostic_highlighting = 1 
let g:ycm_always_populate_location_list = 1 "default 0 
let g:ycm_open_loclist_on_ycm_diags = 1 "default 1 
let g:ycm_seed_identifiers_with_syntax = 1 

let g:ycm_complete_in_strings = 1 "default 1 
let g:ycm_collect_identifiers_from_tags_files = 1 "default 0 
let g:ycm_path_to_python_interpreter = '' "default '' 


let g:ycm_server_use_vim_stdout = 0 "default 0 (logging to console) 
let g:ycm_server_log_level = 'info' "default info 


let g:ycm_global_ycm_extra_conf = '~/.ycm_extra_conf.py' "where to search for .ycm_extra_conf.py if not found 

let g:ycm_confirm_extra_conf = 1 

let g:ycm_goto_buffer_command = 'same-buffer' "[ 'same-buffer', 'horizontal-split', 'vertical-split', 'new-tab' ] 
let g:ycm_filetype_whitelist = { '*': 1 } 
let g:ycm_key_invoke_completion = '<C-Space>' 

nnoremap <F11> :YcmForceCompileAndDiagnostics <CR> 
+1

.... И где ваш '.ycm_extra_conf.py'? Но, честно говоря, если это не что-то тривиальное, мы, вероятно, не сможем помочь, поскольку каждый '.ycm_extra_conf.py' должен быть адаптирован к проекту, над которым вы работаете, поскольку вам нужно передать все флаги компиляции в YouCompleteMe (особенно' - I' для включений) – FDinoff

+0

ОК, я буду изучать его дальше, я использую по умолчанию '.ycm_extra_conf.py', очевидно, нужно проверить флаги компиляции. Я использую XCode, поэтому, возможно, я могу найти флаги в настройках там , – Adamski

+0

Файл '.ycm_extra_conf.py' по умолчанию отсутствует. Существует только тот, который используется для исходного кода YouCompleteMe, который есть в качестве примера. Он не предназначен для работы над проектом каждого. – FDinoff

ответ

2

Как @ FDinoff указал, каждый .ycm_extra_conf.py необходимо настроить для собственного проекта.

Чтобы дать вам пример, который может помочь вам, вот мой: .ycm_extra_conf.py

Потому что я положил всю мою LIBS внутри директорий ./lib в корне моих проектов, я сделал небольшой скрипт для автоматического сканирования каталоги и добавить библиотеки в виде флагов.

Вы можете прочитать его line 57:

for path, dirs, files in os.walk(libDir): 
    for d in dirs: 
     flag = '-I' + os.path.join(path, d) 
     flags.append(flag) 

libDir определяется line 4

А вот оригинальный проект: Moti

EDIT - 12/02/2014 -

Я не вижу .ycm_extra_conf.py в вашем дерево выход. Этот файл должен быть в корне вашего проекта.

Также вы можете попробовать использовать абсолютный путь для своих флагов.

Выход :YcmDebugInfo должен выглядеть так: http://pastebin.com/WARSUiML

Вы можете проверить мой .vimrc где я настроить YCM: Link to YCM Conf. Попробуйте использовать мой без вашего, чтобы узнать, что произойдет.

+1

Хороший проект, вы должны добавить ссылку на свой сайт на своем README. В настоящее время это не очень легко найти. – romainl

+1

спасибо за предложение @romainl, сделаю! :) – ladislas

+0

Спасибо за предложения, я использовал ваш пример, чтобы настроить мой '' '.ycm_extra_conf.py''', но все равно получить ошибки. Я также явно добавляю полный абсолютный путь к библиотеке Juce. Обновление вопроса. – Adamski

1

Для меня YouCompleteMe отлично работает вместе с JUCE без ложных ошибок, которые вы описываете.

Я скопировал файл .ycm_extra_conf.py из моего текущего проекта в предшественник с открытым исходным кодом для вас, где YCM также работает так, как ожидалось.

Получить его от https://github.com/klangfreund/LUFSMeter. Либо YCM работает так, как ожидалось (что-то не так с вашим проектом), либо нет (что-то не так с установкой YCM).

+0

Благодарим за это, однако по-прежнему получаем ложные ошибки с вашим '.ycm_extra_conf.py', а также снова попытались запустить скрипт YCM'./Install.sh'. Я на OSX 10.9 с Xcode 5.1.1. Я попробую скачать весь ваш проект, чтобы точно знать ... – Adamski

1

Я установил обновление XCode на 6.11, и теперь он работает как ожидалось. Благодаря @ladislas и @Samuel Gaehwiler за помощь и указатели.

 Смежные вопросы

  • Нет связанных вопросов^_^