准备工作
获取动态库
安装YouCompleteMe所需的其实只有一个动态库文件libclang.so.$version。由于YCM一直在升级,对clang的版本要求也越来越高。
无奈官网最新的几个版本都没有给出CentOS的预编译包,只能下载官网unknown-linux-gnu版本或自行编译clang得到库文件。
实际尝试过后发现官网unknown-linux-gnu版本虽然可以编译通过,但是无法使用。因此只能选择自行编译clang,具体编译安装过程可以{% post_link clang-from-source-on-centos6 参考 %}。
配置gcc及g++版本
由于集群默认gcc版本太低,故需切换高版本gcc并设置CC和CXX
1
2
3
4
5
|
export CC=gcc
export CXX=g++
## 不做上述设置则需要添加 CMAKE 选项
## -DCMAKE_C_COMPILER=gcc
## —DCMAKE_CXX_COMPILER=g++
|
设置python版本
YouCompleteMe目前同时支持python2及python3,因此开启vim对python2/3的支持均可以。
1
2
3
4
|
## 切换shell中python版本,使其与vim支持的一致
pyenv shell 2.7.15
## or
pyenv shell 3.6.6
|
问题:原本想编译vim使其同时支持python2和python3,但不知哪里出了问题,虽然显示同时支持,可实际上一个都不支持。
安装 YCM
方法一
使用自带安装脚本install.py。
1
2
3
4
5
6
7
8
9
10
|
## YCM 通过sha256来判断是否需要从官网下载需要的库文件
## 为了避免自动下载,使其使用自行编译并打包的动态库
## 需要修改如下文件
cd $HOME/.vim/vim_plugin/YouCompleteMe/third_party/ycmd/cpp/ycm/
vim CMakeLists.txt
## 修改第74行,将该sha256值替换为自己的压缩文件的sha256值,保存并推出。
## 将打包的库文件放到如下目录中
mv /path/to/my/libclang-$version-*.tar.bz2 ../../clang_archive/
|
方法二
使用我自己写的脚本进行Full Installation。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
## 自定义路径
pathbuild=$HOME/ycm_build
pathdest=$HOME/.vim/vim_plugin/YouCompleteMe/third_party/ycmd/cpp
## 新建目录 build
[ -d $pathbuild ] && rm -rf $pathbuild
mkdir $pathbuild && cd $pathbuild
## 开始编译
cmake -DCMAKE_C_COMPILER=gcc \
-DCMAKE_CXX_COMPILER=g++ \
-DUSE_PYTHON2='OFF' \
-DPYTHON_INCLUDE_DIR=$HOME/.pyenv/versions/3.6.6/include/python3.6m \
-DPYTHON_LIBRARY=$HOME/.pyenv/versions/3.6.6/lib/libpython3.6m.so \
-G "Unix Makefiles" -DEXTERNAL_LIBCLANG_PATH=/path/to/libclang.so . $pathdest
cmake --build . --target ycm_core --config Release
## 删除目录 build
rm -rf $pathbuild
|