私はWindowsで64ビットVimを使用しています このバージョン by Haroogan :
+python27
+python33
+huge
clang_complete を使おうとしているので、libclang.dll
ライブラリ here を取得し、vimrc
を正しく設定しました。 libclang.dll
が見つかりました。
ただし、*.cpp
ファイルを開くと、次のメッセージが表示されます。
libclang
組み込みインクルードが見つからないため、完了コードが遅くなります
しかし、私はまったく完了していません...
私が使用しているVimのバージョンを作成した人と一緒に この投稿 を見つけましたが、何をすべきかについて明確な指示がありません。誰かがここで助けることができますか?
これが私がしたことです:
それはほとんど機能します(エラーメッセージはありません)が、それでも次のようになります。
Vim for Windowsをご利用いただきありがとうございます。お楽しみください。
問題を解決するには、.clang_complete
ファイルを利用する必要があります。詳細については、:h clang_complete
をご覧ください。簡単に言うと、このファイルを任意のプロジェクトのルートディレクトリに配置できます(つまり、プロジェクトごとにこのファイルは異なる可能性があります。プロジェクトごとにツールチェーン構成が異なるため、これは完全に理にかなっています)。 MinGW-w64ツールチェーンのサンプルは次のとおりです。
-ID:/Toolchains/x64/MinGW-w64/4.8.1/lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++
-ID:/Toolchains/x64/MinGW-w64/4.8.1/lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++/x86_64-w64-mingw32
-ID:/Toolchains/x64/MinGW-w64/4.8.1/lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++/backward
-ID:/Toolchains/x64/MinGW-w64/4.8.1/lib/gcc/x86_64-w64-mingw32/4.8.1/include
-ID:/Toolchains/x64/MinGW-w64/4.8.1/lib/gcc/x86_64-w64-mingw32/4.8.1/include-fixed
-ID:/Toolchains/x64/MinGW-w64/4.8.1/x86_64-w64-mingw32/include
-ID:/Libraries/x64/MinGW-w64/4.8.1/Boost/1.54.0/include
-ID:/Libraries/x64/MinGW-w64/4.8.1/Qt/4.8.5/include
-ID:/Libraries/x64/MinGW-w64/4.8.1/Eigen/3.1.3/include
"-ID:/Libraries/x64/MinGW-w64/4.8.1/Example with Spaces/0.0.1/include"
-std=c++11
-DUNICODE
Vimを使用してプロジェクト内のファイルを編集している場合、clang_complete
は、最初に読み取る.clang_complete
ファイルに遭遇するまで、編集したファイルのすべての親ディレクトリを逆方向にトラバースします。次に、これらすべてのフラグ/スイッチ/定義を読み取り、libclang
の呼び出し中にそれらを使用して完了します。
最近はclang_complete
を使いません。 Vim用のより強力なセマンティックオートコンプリートプラグインがあります。それはYouCompleteMeです。ぜひお試しください。 Cファミリ言語(C/C++/Objective-C/Objective-C++)のセマンティック補完には、libclang
も使用します。堅牢なC++バックエンドに依存しているため、非常に高速です。 syntasticとの優れた統合があります(別のプラグインにはVimが必要です)。定義などにジャンプする機能があります。
C++で記述され、Python経由でVimに接着されているため、C++バックエンドをコンパイルする必要があります。苦痛を和らげるために、ビルド済みですぐに使用できるYCMプラグインをmyVim YouCompleteMe for Windowsからダウンロードできます。 x86とx64の両方のアーキテクチャ用に構築しました。ネイティブコンポーネントはycm_core.pyd
と呼ばれます。いつものように、選択したVimビルドのアーキテクチャはYCMビルドと一致する必要があります(つまり、ycm_core.pyd
)。 YCMはPython 2(3ではない)で[〜#〜]のみ[〜#〜])動作します。 Python 2 DLL(eg python27.dll
)およびPython 2インタープリター(python.exe
)PATH
環境変数。
LLVM/Clangが必要な場合は、私からダウンロードすることもできます:LLVM for Windows。繰り返しますが、PATH
環境変数にlibclang.dll
があることを確認してください(推奨)[〜#〜]または[〜#〜]ycm_core.pyd
のすぐ隣。ここでも、x86アーキテクチャとx64アーキテクチャの両方がサポートされており、アーキテクチャはVimとYCMの両方に一致する必要があります。
完成について:
彼は魔法のようにSTLがどこにあるかを見つける必要がありますか?
もちろん違います!これは、Clangフロントエンドに基づくオートコンプリートシステムです。コードのコンパイルに現在使用しているツールチェーンをどのように知る必要がありますか? Visual C++、Borland C++、GCC、MinGW、MinGW-w64、LLVM/Clangなど、何でも使用できます。それぞれに独自の標準ライブラリとランタイムが用意されています。したがって、いずれの場合も、現在のツールチェーンが標準インクルードを見つけるために使用するすべてのパスを指定する必要があります。
たとえば、GCC、MinGW、MinGW-w64の場合、POSIXシェルで次を実行できます。
g++ -E -x c++ - -v < /dev/null
またはWindowsコマンドプロンプトの場合:
g++ -E -x c++ - -v < nul
そして、次の抜粋を探してください。
#include <...> search starts here:
d:\toolchains\x64\mingw-w64\4.8.1\posix\seh\bin\../lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++
d:\toolchains\x64\mingw-w64\4.8.1\posix\seh\bin\../lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++/x86_64-w64-mingw32
d:\toolchains\x64\mingw-w64\4.8.1\posix\seh\bin\../lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++/backward
d:\toolchains\x64\mingw-w64\4.8.1\posix\seh\bin\../lib/gcc/x86_64-w64-mingw32/4.8.1/include
d:\toolchains\x64\mingw-w64\4.8.1\posix\seh\bin\../lib/gcc/x86_64-w64-mingw32/4.8.1/include-fixed
d:\toolchains\x64\mingw-w64\4.8.1\posix\seh\bin\../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw32/include
End of search list.
これは、標準へのすべてのパスに、コードのコンパイル中にGCC、MinGW、MinGW-w64が暗黙的に使用するが含まれていることを示しています。
LLVM/Clangの場合、同じことができます。
clang++ -E -x c++ - -v < /dev/null
または:
clang++ -E -x c++ - -v < nul
パスがわかったら、それらを.ycm_extra_conf.py
に追加できます。たとえば、私の場合:
'-I',
'D:/Toolchains/x64/MinGW-w64/4.8.1/POSIX/SEH/lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++',
'-I',
'D:/Toolchains/x64/MinGW-w64/4.8.1/POSIX/SEH/lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++/x86_64-w64-mingw32',
'-I',
'D:/Toolchains/x64/MinGW-w64/4.8.1/POSIX/SEH/lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++/backward',
'-I',
'D:/Toolchains/x64/MinGW-w64/4.8.1/POSIX/SEH/lib/gcc/x86_64-w64-mingw32/4.8.1/include',
'-I',
'D:/Toolchains/x64/MinGW-w64/4.8.1/POSIX/SEH/lib/gcc/x86_64-w64-mingw32/4.8.1/include-fixed',
'-I',
'D:/Toolchains/x64/MinGW-w64/4.8.1/POSIX/SEH/x86_64-w64-mingw32/include',