YCM编译安装

翻译自https://github.com/Valloric/YouCompleteMe的Full Installation Guide部分。
 
Full Installation Guide
 
Remember: YCM是一个编译过的组件的插件。如果你使用Vundle更新了YCM,那么ycm_support_libs链接库API已经改变(极少发生),YCM将会通知你去重新编译它。你应当重新运行安装程序。
 
Please follow the instructions carefully. Read EVERY WORD.
请仔细的按照指令操作。阅读每一个单词。
 
1. 确保你的Vim版本至少为7.3.584,并且它支持python2脚本。(略)。
 
2. 用Vundle安装YCM (或者Pathogen,但是Vundle是一个更好的选择)。用Vundle的话,这意味着增加一行【Plugin 'Valloric/YouCompleteMe'】到你的vimrc文件。
如果你不用Vundle安装YCM,在你检查了YCM知识库之后(Vundle将会自动为你做这些),确保你运行了【git submodule update --init --recursive】以获取YCM的依赖。
 
3. 只有当你关心C-family语言的语义完成支持时,完成这个步骤,否则它是非必需的。
 
下载libclang的最新版本。Clang是一个可以编译C/C++/Objective-C/Objective-C++的开源的编译器。它提供的libclang链接库,libclang链接库被用于运转YCM的语义完成引擎(为那些语言)。YCM被设计去工作(和3.6或更高版本的libclang),但是理论上可以和任何3.2+的版本一起很好的工作。
 
只有你确信系统的libclang是3.3+的,你才可以使用它。否则不要这样做。即使它是3.3+的,如果可能的话,我们推荐使用官方的二进制文件(http://llvm.org/releases/download.html)。确保你为你的操作系统下载正确的归档文件。
我注:RedHat和CentOS和Fedora这三者可以通用,所以CentOS可以下载【Clang for Fedora21 x86_64 Linux (.sig)】然后解压,直接使用。
 
我们强烈建议抵抗使用系统的libclang,取而代之的是使用上游编译的二进制文件。因为非官方的东西,随机的会有一些东西可能是损毁的。节省自己的争论,使用上游预编译的libclang。
 
4. 编译YCM需要的ycm_support_libs链接库。这些链接库都是YCM用于实现快速完成功能的C++引擎。
 
为了生成需要的Makefile文件,你需要安装cmake软件。Linux用户可以用他们的包管理器安装cmake软件,反之其他用户可以从cmake的项目网站(http://www.cmake.org/download/)下载和安装它。Mac用户可以通过Homebrew获取它。
 
你还需要确保你安装了python头文件。在一个Debian类的Linux发行版上,可以【sudo apt-get install python-dev】,在Mac上,它们应当已经被预装了。
 
在这里我们假定你用Vundle安装的YCM。那意味着顶级的YCM目录在【~/.vim/bundle/YouCompleteMe】。
我们将要创建一个新的文件夹以用于放置编译的文件。运行下面的命令:
cd ~
mkdir ycm_build
cd ycm_build
现在我们需要生成Makefile了。如果你不关心C-family的语义支持,在ycm_build目录下运行下面的命令:
cmake -G "Unix Makefiles" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
对于那些想使用想使用系统版本的boost的人,你应当传递【-DUSE_SYSTEM_BOOST=ON】给cmake。它是很必要的在某些系统上(boost的随附的版本不编译out of the box )。
 
NOTE:我们强烈建议反对使用系统boost取而代之的是使用随附的boost版本。因为可能会随机有些东西损坏了。节省自己的争论,使用随附的boost版本。
 
如果你关心C-family语言的语义支持,那么你的cmake调用将要会更复杂一点。我们假定你从llvm.org下载了LLVM+Clang的二进制发布包(在第3步),并且你解压了归档文件到【~/ycm_temp/llvm_root_dir】(有bin、lib、include等文件夹在那个目录里的话,它是正确的)。
 
NOTE:这一步仅仅适用于下载的LLVM二进制包,不是一个定制的(custom-built)的LLVM!看下面的文档for EXTERNAL_LIBCLANG_PATH 当使用了一个定制的LLVM编译版本。
 
当你清楚了上面的NOTE之后,在ycm_build目录运行下面的命令:
cmake -G "Unix Makefiles" -DPATH_TO_LLVM_ROOT=~/ycm_temp/llvm_root_dir . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
我注:cmake -G "Unix Makefiles" -DPATH_TO_LLVM_ROOT=上级目录/llvm_root_dir . 编辑器vim的目录/bundle/YouCompleteMe/third_party/ycmd/cpp/
 
现在Makefile已经被生成了。简单的运行(可能是类似make install 和 make clean 等的假命令):
make ycm_support_libs
对于那些想使用系统版本的libclang,你需要传递【-DUSE_SYSTEM_LIBCLANG=ON】给cmake而不是传递【-DPATH_TO_LLVM_ROOT=...】标志。
注:you would pass -DUSE_SYSTEM_LIBCLANG=ON to cmake instead of the -DPATH_TO_LLVM_ROOT=... flag.在这里pass取[“传递”参数]之意。
 
NOTE: 我们强烈建议抵抗使用系统libclang,建议使用上游编译的二进制文件。因为随机的东西可能是损毁的。节省自己的争论,使用上游预编译的libclang。
 
随着【-DEXTERNAL_LIBCLANG_PATH=/path/to/libclang.so】标志(在Mac上,链接库将以.dylib为后缀),你还可以强制使用定制的libclang链接库。再一次的,这个标志将会被使用,用以替代其他标志。如果你源码编译LLVM,你应当使用这个标志。
 
运行make命令(我注:运行了 make ycm_support_libs 命令)也将会为你替换YouCompleteMe/third_party/ycmd文件夹下的libclang.[so|dylib],如果你编译了clang支持(要让YCM工作,它需要被放在那里)。
 
That's it. You're done. 收工。
 
======下面是CentOS 6.5下,安装YCM的步骤======
 
这里主要存放那些可选的程序。你想尝试最新的firefox测试版吗?那就装到/opt目录下吧,这样,当你尝试完,想删掉firefox的时候,你就可以直接删除它,而不影响系统其他任何设置。安装到/opt目录下的程序,它所有的数据、库文件等等都是放在同个目录下面。
 
对于CentOS,说白了,先装上要用的东西( yum install gcc gcc-c++ cmake python python-devel git )(貌似对python没有版本的要求,yum的python就行)。记得一定要使用官网预编译的 clang+llvm 包。
 
1. 确保Vim版本至少为7.3.584,并且它支持python2脚本。
 
2. 获取YCM的源码和依赖。
# 切换到vim下的bundle目录
cd bundle/
# 用git获取YouCompleteMe文件夹的内容
git clone https://github.com/Valloric/YouCompleteMe.git
cd YouCompleteMe/
# 获取 YCM 的依赖包
git submodule update --init --recursive
 
3. 官网下载clang+llvm-3.6.1-x86_64-fedora21.tar.xz ,假设解压后的目录为/opt/clang+llvm-3.6.1-x86_64-fedora21/,其下就是 bin、docs、include、lib、share 等。
 
4. 编译YCM需要的ycm_support_libs链接库。
yum install cmake python-devel
cd /opt/
mkdir ycm_build
cd ycm_build
cmake -G "Unix Makefiles" -DPATH_TO_LLVM_ROOT=/opt/clang+llvm-3.6.1-x86_64-fedora21/ . 编辑器vim的目录/bundle/YouCompleteMe/third_party/ycmd/cpp/
make ycm_support_libs
 

That's it. You're done. 收工。

最后需要执行: ./install.sh --clang-completer

 

原文地址:https://www.cnblogs.com/missmzt/p/8573189.html