type
status
date
slug
summary
tags
category
icon
password
comment_flag
SLUGS
上一篇文章《Windows编译安装Vim/Gvim》是以安装ycm为目的而写的。ycm在vim插件中极为难装,在linux下就已经很难折腾了,更别说windows下安装这插件,安装错误真是多如牛毛。为什么非得安装ycm?对于本人来说,vim没有强大的插件,就变得和记事本一样,而ycm是vim强大插件之一。 由于网上关于windows下安装ycm的资料浩如烟海,即使本人一一尝试,本人并未找出最简洁的安装方案,所以以下部分操作可能是不必要的,希望能帮忙指出。
注:本文的某些软件版本已不是最新版,但大体方法可变通适用!
本文环境:
  • Visual Studio 2017
  • Git
  • Python3.6.5
  • clang
  • Cmake

编译环境部署

  1. Visual Studio 2017安装:官网https://visualstudio.microsoft.com/zh-hans/downloads/下载安装Visual Studio 2017,并安装使用C++的桌面开发支持。
  1. Git和Python3.6.5的安装这已在上一篇文章中提及。
  1. clang安装:在http://releases.llvm.org/download.html下载新版的Pre-Built Binaries包:Clang for Windows (64-bit) (.sig)得到LLVM-5.0.2-win64.exe打开安装,勾选添加到系统变量中。本文安装路径为E:\DevelopTools\LLVMCLANG\LLVM
  1. cmake安装:在https://cmake.org/download/下载cmake-3.12.0-rc1-win64-x64.msi,打开安装即可。

下载ycm

E:\DevelopTools\Vim\vimfiles\bundle下右键Git Bash here然后执行:
等待下载完成。

编译ycm

在YouCompleteMe创建build文件夹。 打开Cmake-Gui,填写如下: Where is the source code:E:/DevelopTools/Vim/vimfiles/bundle/YouCompleteMe/third_party/ycmd/cpp Where to build the binaries:E:/DevelopTools/Vim/vimfiles/bundle/YouCompleteMe/build 选中Advanced。 点击configure,切换成Visual Studio 15 Win64。 然后一般会报错(未报错就当报错处理),去掉USER_PYTHON2,再Configure。 修改PYTHON_LIBRARY的value值:E:/DevelopTools/python36/libs/python36.lib为你的Python3下的python36.lib。 再勾选USE_CLANG_COMPLETER,修改PATH_TO_LLVM_ROOT的值:E:\DevelopTools\LLVMCLANG\LLVM为你的clang安装路径,需保证该路径下含有bin、include、lib... 继续Configure,直到没有报错,然后Generate。 出现NOT using clang-tidy for static analysis可以不管。(目前不知是何原因)
注:切记切换成Visual Studio 1x x64,不要使用默认的win32
 
notion image

安装ycm

然后使用cmd并cd到E:/DevelopTools/Vim/vimfiles/bundle/YouCompleteMe/build,执行:
如果LLVM以及MinGW在Path中,可以不做下面这一步: 然后 将E:\DevelopTools\msys2\mingw64\bin\libstdc++-6.dll、E:\DevelopTools\msys2\mingw64\bin\libwinpthread-1.dll、E:\DevelopTools\msys2\mingw64\bin\libgcc_s_seh-1.dll、E:\DevelopTools\LLVMCLANG\LLVM\bin\libclang.dll拷贝到YouCompleteMe/third_party/ycmd。

配置ycm

将:\DevelopTools\Vim\vimfiles\bundle\YouCompleteMe\third_party\ycmd\examples\.ycm_extra_conf.py复制到%USERPROFILE%系统用户目录C:\Users\Julian 在用户目录的_vimrc中添加:
这样打开vim编写一个*.cc语言文件,有自动补全,但貌似不完整,比如说:#include<stdi被输入时,并不弹出stdio.h补全。解决方案: 修改用户目录下的.ycm_extra_conf.py,在flags=[里添加
关于.ycm_extra_conf.py脚本配置可参考:
为YCM配置ycm_extra_conf.py脚本
YCM应该是vim补全的标配了,关于配置可以直接阅读官方README文件,写得十分详细,但是需要点耐心。 我之前写过 Ubuntu 16.04 64位安装YouCompleteMe,主要针对的是 apt-get 安装的vim版本不支持YCM的python引擎问题,所以得手动编译vim源码。不过关于YCM的配置文件很多都是直接照抄的,有些用法没有理解,最近想要看看开源代码,由于include的头文件很多都把项目目录作为包含目录,而YCM配置文件缺只使用了系统目录,所以无法进行代码跳转和补全。 YCM配置文件的路径在.vimrc文件中定义,比如我的配置是 let g:ycm_global_ycm_extra_conf='~/.ycm_extra_conf.py' 用的默认命名 ycm_extra_conf.py,直接扔到了用户主目录下,修改文件名和路径都是可以的。该配置文件的核心就是修改 flags 变量。 flags = [ '-Wall', '-Wextra', '-Werror', '-Wno-long-long', '-Wno-variadic-macros', '-fexceptions', '-DNDEBUG', '-std=c++11', '-x', 'c++', '-I', '/usr/include', '-isystem', '/usr/lib/gcc/x86_64-linux-gnu/5/include', '-isystem', '/usr/include/x86_64-linux-gnu', '-isystem' '/usr/include/c++/5', '-isystem', '/usr/include/c++/5/bits' ] 可以看到 flags是一个列表,参数是和gcc的参数一致。 比如对下面的示例项目 $ tree sample/ sample/ ├── include │ └── foo.h └── src └── main.cc 其中 main.cc的include代码如下 可以发现vim提示foo.h无法找到,但是我们可以这样编译该文件 g++ main.cc -isystem $HOME/sample/include 也可以用下列编译方式 g++ main.cc -I $HOME/sample/include 用 man gcc查看手册,找到-isystem 的说明 -isystem dir Search dir for header files, after all directories specified by -I but before the standard system directories.
为YCM配置ycm_extra_conf.py脚本
Linux安装Matlab流程Windows编译安装Vim
Loading...