这两天开始使用vim来学习C++语言,中间少不了要进行编译。才刚刚写了两个小例子就开始发现,每次都要退出vim来进行编译,实在太麻烦了。这时候才想到
之前有在一本关于vim的书籍上看到quickfix的介绍,当时因为没有需要,这部分并没有认真去看,现在既然用到了,那就开始好好研究你她的使用
    基本的使用方法就是配置makeprg,例如我想用g++来编译我的C++,我就可以进行如下配置 set makeprg=g++\ %\ -o\ %:r。这样就可以直接在我们vim中使用命令行make 来自动编译当前文件了。

折腾了两天,现在终于可以成功使用YCM了,现在记录下安装此插件的过程
        一、前提条件
            1.vim保证7.3以上
                ubuntu 下可以直接通过sudo apt-get install vim进行安装
            2.安装cmake
                CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目
                ubuntu 下可以通过sudo apt-get install cmake进行安装
        二、安装YCM插件
           1.直接添加 Bundle 'Valloric/YouCompleteMe' 到.vimrc中,然后运行BundleInstall

三、安装LLVM-Clang3.9、Clang 标准库
            1.clang
                Clang是一个C语言、C++、Objective-C、C++语言的轻量级编译器
                可以通过sudo apt-get install clang 进行安装
            2.llvm
                一种编译器构架系统

3.安装的话,直接下载预编译的文件,解压以后,然后拷贝到本地目录/usr/local/即可
                http://llvm.org/releases/download.html->Download LLVM 3.9.0->Pre-Built Binaries->Clang for x86_64 Ubuntu 16.04 (.sig)
            4.生成YCM需要的检索库
                因为我需要支持C、C++,所以编译过程如下
                1)cd ~; mkdir ycm_build; cd ycm_build
                2)步骤3中我们已经下载了clang+llvm的预编译文件,我们把它们解压到 ~/ycm_temp/llvm_root_dir
                3)执行如下命令 cmake -G "<generator>" -DPATH_TO_LLVM_ROOT=~/ycm_temp/llvm_root_dir . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
                4)cmake --build . --target ycm_core --config Release,她会在ycm下生成一个ycm_core.so

经过好几天的折腾,总算把YCM安装好了,虽然说它的具体作用还没有充分发掘,不过,从刚刚几次的牛刀小试来看,体验完全上了不止一个档次。唯一感觉遗憾的是,对java的支持不好,如果java也能做到如此只能联想,那就爽爆了。
    经过这件事,有一点感触非常的深,那就是我们总是能碰到奇奇怪怪的问题,碰到这些问题的时候,一定不要灰心放弃,努力尝试各种方案,静下心来研究整合,总会把问题解决的。再者,也不要完全依赖网络上现成的解决办法,机械的尝试,不如静下心来好好研究问题原因。不过,目前还是有一个问题没有解决,就是Clang好像不能支持libc++啊。这个等待真的影响到自己c++学习的时候,再解决吧。

最新文章

  1. SmartAssembly使用失败记录
  2. NPM 使用淘宝镜像
  3. COGS439. [网络流24题] 软件补丁
  4. Neo4j 3.0 存储过程
  5. 微信App支付通知验签
  6. js提取正则中的字符串
  7. 设置SecureCRT会话的缓冲区大小
  8. cryptdb中wrapper.lua的分析
  9. SPOJ #440. The Turtle&#180;s Shortest Path
  10. AVR JTAG MKii 引脚布局 ( JTAG 和 ISP )
  11. weka 集成学习
  12. Nginx重要结构request_t解析之http请求的获取
  13. 一个不错的flash 模板
  14. 常用排序算法之——选择排序(C语言+VC6.0平台)
  15. WEB 移动网站 手机点击 打电话 发短信
  16. FPGA的SPI从机模块实现
  17. 何谓集群(cluster)
  18. MySQL--更新自增列的潜在风险
  19. Docker环境安装与配置
  20. 一步一步学习IdentityServer3 (8)

热门文章

  1. (转)彻底学会使用epoll(一)——ET模式实现分析
  2. jquery mobile常用的data-role类型介绍
  3. HDU 2643
  4. 使用docker搭建hadoop分布式集群
  5. Android圆形图片--自己定义控件
  6. bzoj1293: [SCOI2009]生日礼物(stl堆)
  7. 超便携式截屏录屏软件FastStone Capture
  8. 你务必知道的css简写
  9. (转)js document.all的用法
  10. AOJ 0118: Property Distribution (简单DFS)