《OceanBase开发者手册》之二 如何设置IDE开发环境
Abstract
《OceanBase开发者手册》 主要指导开发者如何参与到OceanBase 的研发, 铺平参与OceanBase 开发的准备工作遇到的问题, 当前章节大概这几篇文章, 未来可能会增加部分文章, 目前OceanBase 源码参考OceanBase 开源官网的《开源数据库OceanBase源码解读》 系列 :
- 如何编译OceanBase源码
- 如何设置IDE开发环境
- 如何成为OceanBase Contributor
- 如何修改OceanBase文档
- 如何debug OceanBase
- 如何运行测试
- 如何修bug
本文将介绍如何在开发环境中, 设置编译器, 重点设置编译器的 code format 工具 -- clang-fromat。 本文内容来自内部同事分享, 该设置可以分享给所有的c/c++ 项目中.
clang-format是clang(一个面向C系语言的轻量级编译器)中一个工具,主要负责代码的格式化和排版工作,可独立于clang工作,所以经常被单独用来用作代码规范格式化,很多第三方插件也都集成了clang-fromat。clang-format与各个IDE集成. clang-format 差不多已经快成为c/c++ 上实时的代码格式化标准.
步骤
vscode
既然看到这步了,我就姑且认为你已经装好了vscode,如果没有的话,可以先移步vscode官网下载
STEP 1
首先确保你的开发环境下的vscode安装了C/C++扩展; 这里要注意vscode远程和本地vscode插件不共用
STEP 2
在setting中对Clang_format_style进行设置, 确认C/C++扩展的配置Clang_format_style 设置成file (此处默认是file,如果不放心可以检查一下);
STEP 3
将准备好的.clang-format文件拷贝到工程目录下(部分项目工程目录下已存在)
STEP FINAL
恭喜你已经完成vscode 中clang format 设置, 如果前面都完成了的话,那么在vscode中格式化代码时就会自动根据.clang-format配置格式化文件
eclipse
STEP 1:
首先需要在你的开发环境下载clang-format (此处后面推广的时候提供wget包下载或者其他更通用的方式) 1
$brew install clang-format
当执行$OBDEV_ROOT/build.sh --init 后, 会自动下载clang-format, 你可以在这里看到它 1
2find ./ -name clang-format
./deps/3rd/usr/local/oceanbase/devtools/bin/clang-format
STEP 3:
配置 CppStyle中clang-format的路径: 1
2(如果你CppStyle插件安装成功并重启的话,就会有这项配置)
Preferences -> C/C++ -> CppStyle
STEP 4:
配置 Code Formatter 为CppStyle: 1
Preferences -> C/C++ -> Code Style -> Formatter
STEP 5:
将准备好的.clang-format文件拷贝到工程目录下(部分项目工程目录下已存在)
STEP FINAL:
此时就完成了所有准备工作,在eclipse编写代码的时候,格式化代码的时候,就会自动引用.clang-format的配置重新编排代码
CLion
啊,写攻略终于写到一个轻松的了,JetBrains YYDS! CLion天然集成了clang-format,所以只需要确认几项配置即可
STEP 1:
随便打开某个.h/.c/.cpp文件,在右下角点击'4 spaces' 然后选择Enable ClangFormat
如果此处没有'4 spaces',而是直接就是ClangFormat,那么就是CLion自动识别到存在.clang-format文件,帮忙配置好了
STEP 2:
确认'Enable ClangFormat'配置是否打开(这个CLion也是默认开启的) 1
Preferences -> Editor -> Code Style
STEP 3:
将准备好的.clang-format文件拷贝到工程目录下(部分项目工程目录下已存在)
STEP FINAL:
CLion就可以直接使用clang-format进行格式化了,当执行Reformat Code时就会自动编排代码
VIM
STEP 1:
首先需要clang-format.py文件我们可以直接去github上面把对应文件拷贝下来;
STEP 2:
然后配置当前用户的.vimrc文件(如果没有的话,在当前用户的根目录下创建.vimrc文件即可) 1
2
3
4
5
6
7
8map <C-K> :pyf <path-to-this-file>/clang-format.py<cr>
imap <C-K> <c-o>:pyf <path-to-this-file>/clang-format.py<cr>
function! Formatonsave()
let l:formatdiff = 1
pyf <path-to-this-file>/clang-format.py
endfunction
autocmd BufWritePre *.h,*.cc,*.cpp call Formatonsave()
PS:前面两行是增加主动触发clang-format功能 1
2
3normal模式下,ctrl+k将格式化一行代码
visual模式下,ctrl+k将格式化选中代码
insert模式下,ctrl+k将格式化一行代码
STEP FINAL:
完成前面的工作,vim就成功集成了clang-format,只不过需要注意的是,使用的时候先需要cd到工程路径下,并确保工程路径下已有.clang-format文件,然后在该路径下,使用vim去修改文件即可(在使用vim时就不要切换当前目录啦)
EMACS
EMACS貌似很强大的一个编辑器(都不确定是否应该称之为编辑器),但是对新人来说学习成本略高,折腾了一个晚上才勉强搞定😅 如果看这一块的话,我就默认大家已经了解了emacs的一些基本操作,展开讲可以单开一个系列的语雀了,所以我这里只放出和clang-format集成相关的操作了,其他的不做过多讲解 STEP 1: 首先需要在你的开发环境下载clang-format (此处后面推广的时候提供wget包下载或者其他更通用的方式) 1
brew install clang-format
当执行$OBDEV_ROOT/build.sh --init 后, 会自动下载clang-format, 你可以在这里看到它 1
2find ./ -name clang-format
./deps/3rd/usr/local/oceanbase/devtools/bin/clang-format
STEP 2:
然后需要使用package-install安装clang-format包,如果没有的话,可以修改package sources,这里展示一下我使用的sources配置: 1
2
3("melpa" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/melpa/")
("org-cn" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/org/")
("gnu" . "http://mirrors.tuna.tsinghua.edu.cn/elpa/gnu/")1
.emacs.d/elpa/clang-format-20191106.950
1
(load "/Users/xxx/.emacs.d/elpa/clang-format-20191106.950/clang-format.el")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15(defun set-exec-path-from-shell-PATH ()
"Set up Emacs' `exec-path' and PATH environment variable to match
that used by the user's shell.
This is particularly useful under Mac OS X and macOS, where GUI
apps are not started from a shell."
(interactive)
(let ((path-from-shell (replace-regexp-in-string
"[ \t\n]*$" "" (shell-command-to-string
"$SHELL --login -c 'echo $PATH'"
))))
(setenv "PATH" path-from-shell)
(setq exec-path (split-string path-from-shell path-separator))))
(set-exec-path-from-shell-PATH)
STEP FINAL:
现在就已经完成了clang-format的集成工作,在开发中,只需要在文件编辑界面执行M-x clang-format-buffer 即可。此时clang-format会自动向本级及父级目录找到.clang-format文件,并根据文件配置格式化代码