0

インストールガイドに従ってYouCompleteMeをインストールしました。WindowsマシンでgVimを使用しています。基本的なシンボリック補完は機能していますが、ヘッダーからオートコンプリートできません。

私が持っている場合:

#include <vector>
using namespace std;
vector<int> myVector;

その場合、補完は見つかりませんmyVector.<smth like push_back etc...>

Vim のステータス バーには次のように表示されます。

--User defined completion (^U^N^P) Pattern not found

また

--Omni completion (^O^N^P) Pattern not found

診断

問題の診断を開始しました。:YcmDiagsコマンドは、ヘッダー ファイルからのエラーのリストを表示します。YouCompleteMeは常にソースをコンパイルするためにclangを使用しているため、ファイルを clang でコンパイルしようとしました。また、 .ycm_extra_conf.pyのフラグで clang のコマンド ライン オプションを指定する必要があることも知っています。YCM がclang.execlang-cl.exe のどちらを実行するかはわかりませんが、実際には、コマンド ラインからvsvars32.batを実行した後、 clang-cl.exeを手動で使用して .cpp ファイルを正常にコンパイルしました。clang.exeを使用してコンパイルに成功しませんでした。

.ycm_extra_conf.pyファイルのフラグ セクションは次のとおりです。

flags = [ 
'-std=c++11',
'-x', 'c++',
'-I', 'C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include',
'-I', 'C:/Program Files (x86)/Windows Kits/10/Include/10.0.10150.0/ucrt',
'-I', 'C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/atlmfc/include',
'-I', 'C:/Program Files (x86)/Windows Kits/NETFXSDK/4.6/include/um',
'-I', 'C:/Program Files (x86)/Windows Kits/8.1/Include/um',
'-I', 'C:/Program Files (x86)/Windows Kits/8.1/Include/shared',
'-I', 'C:/Program Files (x86)/Windows Kits/8.1/Include/winrt',
'/link', '/LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib" /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\lib" /LIBPATH:"C:\Program Files (x86)\Windows Kits\10\lib\10.0.10150.0\ucrt\x86" /LIBPATH:"C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x86"',
'/EHsc']
4

2 に答える 2

0

micbouがこの質問に答えてくれました。

Windows では、Clang はi686-pc-windows-gnu32 ビットおよびx86_64-w64-windows-gnu64 ビットをデフォルトのターゲットとして使用します。次のフラグを追加して、MSVC に変更する必要があります。

flags = [ '--target=<arch>-pc-windows-msvc<xx.yy.zzzzz>' ]i68632 ビット、x86_6464 ビットで<xx.yy.zzzzz>、MSVC のバージョンです。VC++ コンパイラを実行することで見つけることができますcl.exe。あなたの場合、32 ビットで MSVC 14 を使用しているため、ターゲットはi686-pc-windows-msvc19.00.23506.

既に追加したインクルード フラグを使用して、ヘッダーから補完を取得する必要があります。

私の特定のケース--target=x86_64-pc-windows-msvc19.00.23026では、フラグが問題を解決しました。

于 2016-01-23T22:46:53.047 に答える