YouCompleteMe和C ++诊断错误

时间:2014-11-30 23:15:52

标签: c++ c++11 vim exuberant-ctags juce

我试图让YCM在Vim中进行C ++开发。我正在使用JUCE框架。 Ctags和autocompletion工作得很好。但是,我在“排水沟”中出现了很多错误的错误。作为红色箭头。

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.pyhttps://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 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>

3 个答案:

答案 0 :(得分:2)

正如@FDinoff指出的那样,每个.ycm_extra_conf.py都需要为自己的项目量身定制。

为了给你一个可能对你有所帮助的例子,这是我的:.ycm_extra_conf.py

因为我将所有的lib放在项目根目录的./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

编辑 - 2014年2月12日 -

我在树输出中看不到.ycm_extra_conf.py。该文件应位于项目的根目录。

您也可以尝试使用标志的绝对路径。

:YcmDebugInfo的输出应如下所示:http://pastebin.com/WARSUiML

您可以查看我配置YCM的.vimrcLink to YCM Conf。尝试在没有你的情况下使用我的,看看会发生什么。

答案 1 :(得分:1)

对我而言,YouCompleteMe与JUCE配合使用时没有您所描述的错误错误。

我已将.ycm_extra_conf.py从我当前的项目复制到您的开源源代码前身,YCM也按预期工作。

https://github.com/klangfreund/LUFSMeter获取。要么YCM按预期工作(你的项目有问题),要么它没有(你安装YCM有什么问题)。

答案 2 :(得分:1)

我将XCode更新安装到6.11,现在它似乎正在按预期工作。 感谢@ladislas和@Samuel Gaehwiler的帮助和指示。