c ++ 11 — диагностика неподходящих ошибок YouCompleteMe и C ++

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

Например.

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
Я добавляю библиотеки JUCE с абсолютным путем, а также версию локального проекта и копирую предложение из примера @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 infolet 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>

0

Решение

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

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

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

Вы можете прочитать это линия 57:

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

libDir определено строка 4

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

РЕДАКТИРОВАТЬ — 12/02/2014

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

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

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

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

2

Другие решения

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

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

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

1

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

1
По вопросам рекламы [email protected]