设为首页 收藏本站
查看: 670|回复: 0

[经验分享] 搭建ubuntu下的码代码环境(短小但精干,看完即做完)

[复制链接]

尚未签到

发表于 2017-11-19 19:43:50 | 显示全部楼层 |阅读模式
  第一步,编辑器
作者没有用过emacs,所以这里只介绍vim。
如果你非常懒,啥也不想自己干,这里推荐spf13,安装完毕后你就可以愉快的玩耍了:
https://github.com/spf13/spf13-vim
  如果你想配置一个属于自己的vim,不需要spf13所提供的如此强大的诸多功能,可参考作者的配置:
以下是作者正在使用的vim配置及插件。
vimrc:



"Pathogen
execute pathogen#infect()
syntax on
filetype plugin indent on
"Common
let mapleader=","
set helplang=cn
set fileencodings=8859-1,utf-8,gbk,cp936
set number
syntax enable
set laststatus=2
set smartindent
set tabstop=4
set shiftwidth=4
set expandtab
set autoindent
"NERDTree
nmap <C-e> :NERDTreeToggle<CR>
"Tagbar
nmap <leader>tt :TagbarToggle<CR>
let g:tagbar_left=1
let g:tagbar_width=60
"Airline
let g:airline#extensions#bufferline#enabled=0
let g:airline#extensions#tabline#enabled=1
let g:airline#extensions#tabline#show_buffers=1
let g:airline#extensions#tabline#buffer_nr_show=1
"Cscope
set cscopequickfix=s-,c-,d-,i-,t-,e-
nmap <C-c>g :cs find g <C-R><C-W><CR>
nmap <C-c>c :cs find c <C-R><C-W><CR>
if filereadable("cscope.out")
cs add cscope.out .
endif
"Grep
nnoremap <silent> <F3> :Grep<CR>
"CppTag
set tags+=~/.vim/tags/cpp
"ColorScheme
:colorscheme nove
  插件:
插件的管理推荐pathogen(可以优先安装它),它使删除和添加插件更方便,.vim目录看着不乱。
好用的插件在vimrc中以"打头列出(包括ack/airline/ctrlp/easymotion/neocomplete/nerdtree/supertab/tagbar),可在github上直接搜索并使用git clone安装它们。
注1:关于自动补全(就是上头的neocomplete和supertab)有更好的替代品ycm(youcompleteme),但后者要求更高的vim版本(系统版本)。如果版本满足要求,
作者强烈推荐ycm。
这里单独讲一下ycm的安装(其他的插件全部使用git clone即可,很简单)。官方页:https://github.com/Valloric/YouCompleteMe
step1:git clone
step2:install build-essential cmake python-dev python3-dev
step3:如果是使用的pathogen,不是vundle,那么需要手动克隆依赖仓。



git submodule update --init --recursive
  step4:下载安装libclang



sudo apt-get install llvm-3.9 clang-3.9 libclang-3.9-dev libboost-all-dev
  step5:根据你所使用的语言,带上补全参数,如c/c++的如下。



cd ~/.vim/bundle/YouCompleteMe
./install.py --clang-completer
  step6:将ycm的vim配置加到vimrc中。



$ cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py ~/.vim/
  在vimrc中添加如下两行:



let g:ycm_server_python_interpreter='/usr/bin/python'
let g:ycm_global_ycm_extra_conf='~/.vim/.ycm_extra_conf.py'
  step7:完事后发现c++的头文件无法自动补全,需要在ycm的配置文件(.ycm_extra_conf.py)的flags中添加c++的头文件(最后四行粗斜体):



flags = [
'-Wall',
'-Wextra',
'-Werror',
'-fexceptions',
'-DNDEBUG',
# THIS IS IMPORTANT! Without a "-std=<something>" flag, clang won't know which
# language to use when compiling headers. So it will guess. Badly. So C++
# headers will be compiled as C headers. You don't want that so ALWAYS specify
# a "-std=<something>".
# For a C project, you would set this to something like 'c99' instead of
# 'c++11'.
'-std=c++11',
# ...and the same thing goes for the magic -x option which specifies the
# language that the files to be compiled are written in. This is mostly
# relevant for c++ headers.
# For a C project, you would set this to 'c' instead of 'c++'.
'-x',
'c++',
'-isystem',
'/usr/include',
'-isystem',
'/usr/local/include',
'-isystem',
'/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1',
'-isystem',
'/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include',
# ADD BY NOVE
# add c
++ headers.
'-isystem',
'/usr/include/c++/5.4.0'
,
]
  大功告成。
  配色:
作者没能找到比较好的配色方案,目前作者使用的是:
http://bytefluent.com/vivify/

第二步,编译器
作者仍然土掉渣得在使用gcc/g++

第三步,调试器
作者仍然土掉渣得在使用gdb

第四步,测试用例(UT/ST)
作者使用的是googletest,详细介绍请移步github gtest仓。
这里给出作者的Makefile供参考(也可参考gtest的官方Makefile):



CXX = g++

# GTEST ROOT DIR
# use this, do not copy gtest_root/include to each of your project.
GTEST_DIR = ~/nove/gtest/googletest-master/googletest
# Where to find user code.
CUR_DIR = $(shell pwd)
includes = -I $(CUR_DIR)/include\
-I $(GTEST_DIR)/include\
libs = -L lib\
link_libs = -lpthread\
-lgtest\
SRC_DIR = src\
# Flags passed to the preprocessor.
# Set Google Test's header directory as a system directory, such that
# the compiler doesn't generate warnings in Google Test headers.
CPPFLAGS += -isystem $(GTEST_DIR)/include
# Flags passed to the C++ compiler.
CXXFLAGS += -g -Wall -Wextra -pthread --std=c++11
target = gogogo
files = $(foreach d, $(SRC_DIR), $(wildcard $(d)/*.cpp))
objects = $(patsubst %.cpp, %.o, $(files))
# House-keeping build targets.
$(target) : $(objects)
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $^ -o $@ $(libs) $(link_libs)
%.o : %.cpp
$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(includes) -c $^ -o $@
all : $(target)
clean :
rm -rf $(target)
rm -rf $(objects)
  
至此,一个完整的做题环境已经搭建完毕(当然不限于只是做题,项目也一样)。不过会发现调试很麻烦,作者比较懒,没有去尝试其他的调试器。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-408640-1-1.html 上篇帖子: Broadcom BCM94360系列网卡Linux(Ubuntu/Fedora)驱动安装总结 下篇帖子: 一些 Ubuntu 使用的小技巧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表