0

C++ 開発用に Vim で YCM を動作させようとしています。私はJUCEフレームワークを使用しています。Ctags とオートコンプリートはうまく機能しています。ただし、「ガター」に赤い矢印として多くの間違ったエラーが表示されます。

例えば

no matching member function for call to 'addAndMakeVisible'

whenaddAndMakeVisibleは継承されたクラスの関数であり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 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>
4

3 に答える 3

2

@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)

libDir4行目で定義されています

元のプロジェクトは次のとおりです: Moti

編集 - 12/02/2014 -

.ycm_extra_conf.pyあなたのツリー出力には表示されません。このファイルは、プロジェクトのルートにある必要があります。

また、フラグに絶対パスを使用することもできます。

の出力は次の:YcmDebugInfoようになります: http://pastebin.com/WARSUiML

YCM を構成する場所を確認でき.vimrcます: Link to YCM Conf。あなたのものなしで私のものを使ってみて、何が起こるか見てみましょう。

于 2014-12-01T09:40:30.420 に答える
1

私にとって、YouCompleteMe は、あなたが説明している誤ったエラーなしで、JUCE と組み合わせてうまく機能します。

現在のプロジェクトから .ycm_extra_conf.py を、YCM も期待どおりに動作するオープンソースの前身のプロジェクトにコピーしました。

https://github.com/klangfreund/LUFSMeterから入手してください。YCM が期待どおりに動作する (プロジェクトに問題がある) か、動作しない (YCM のインストールに問題がある) かのいずれかです。

于 2014-12-05T11:08:22.363 に答える
1

XCode アップデートを 6.11 にインストールしたところ、期待どおりに動作しているようです。@ladislas と @Samuel Gaehwiler のヘルプとポインタに感謝します。

于 2014-12-08T22:53:00.563 に答える