公式に詳しい手順は書いているのですが、手順通りに進めても上手く行かない箇所があったため、備忘録を兼ねてYouCompleteMe(以下YCM)をインストールする手順を残します。
デモ
環境
環境はすべて64bitです。
- Windows 10 Pro
- Visual Studio Community 2017
- C++は必須。
- C#の補完もするならC#も、追加でC++インストール時のMSBuildも必要。
- LLVM 5.0.0
- 5.0.0じゃないといけない、5.0.1だと上手くいかなかった。
- ダウンロード: Pre-Built Binaries:のClang for Windows (64-bit)
- Python 3.5.x(リンクは3.5.4)
- ダウンロード: Windows x86-64 executable installer
- Git
また、Vimの環境は次の通りです。
- Vim 8.0.0596 +kaoriya (2017/05/02)
- vimproc
- vimproc_win64.dllをビルドする際に必要になるwin32.makはMicrosoft Windows SDK for Windows 7 and .NET Framework 4に含まれている
- NeoBundle
- dein.vimではない。1
YCMのインストール
- 1. vimrcにYCMを追加
vimrc
NeoBundle 'Valloric/YouCompleteMe'
- 2. YCMプラグインフォルダへ
path\to.vim\bundle\YouCompleteMe\third_party\ycmd\cpp\ycm\CMakeLists.txt
を開き、LLVMへのパスを追加する
CMakeLists.txt
# 25行あたり
set( PATH_TO_LLVM_ROOT "path/to/LLVM" CACHE PATH "Path to the root of a LLVM+Clang binary distribution" )
- 3. YCMのビルド
コマンドプロンプトを「VS 2017用 x64 Native Tools コマンドプロンプト」で開き、
MSBuild.exeとcmake.exeにパスを通す
※パスは省略
コマンドプロンプト
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.5.2
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64'>where msbuild
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSBuild.exe
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe>where cmake
情報: 与えられたパターンのファイルが見つかりませんでした。
>set path=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin;%path%>where cmake
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe
このままYCMのパスへ行き、念のためgit submodule udpateをしておく
コマンドプロンプト
path\.vim\bundle\YouCompleteMe>git submodule update --init --recursive
ようやくビルド、pythonによるビルド時のビルドオプションに補完したい言語を指定する、
--allを指定すると、C-family(C、C++、Objective C、Objective C++)、C#、Python、Go、TypeScript、JavaScript、Rustでコード補完が効くようになる。
コマンドプロンプト
path\.vim\bundle\YouCompleteMe>python install.py --all
ビルドに10分くらいかかる
C++用の設定
C++の補間用の設定にthird_party\ycmd\examples.ycm_extra_conf.pyをコピーして使う。
自分はユーザーホームディレクトリに置いてるのでvimrcにそれを読み込むように設定する。
vimrc
let g:ycm_global_ycm_extra_conf = $HOME . '/.ycm_extra_conf.py'
このままではC++の補完が効かないのでC++ヘッダのincludeディレクトリを設定するのだが、この時にVisual Studio 2015(VC14)のだと上手くいった。2
~/.ycm_extra_conf.py
flags = [
'-Wall',
'-Wextra',
# '-Werror',
'-fexceptions',
'-DNDEBUG',
'-std=c++14',
'-x',
'c++',
# C++
'-I',
'C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include',
# Boost
'-I',
'E:/SDKs/boost_1_65_1',
]