Clang-Format简单配置

最近可是接触C/C++项目,在Linux上尝试了Vim、VSCode和QTCreator等工具进行开发,每个工具的默认代码格式化风格都不一样,如果团队成员使用的是不同的开发工具,那么代码的自动格式化必须要解决,幸好Clang-Foramt解决了这个难题。Clang-Format是一个代码格式化工具,可以配合Vim、QTCreator、VSCode和Xcode一起使用。接下来以Clang-Format最简单的配置开始。


导出格式文件

要使用Clang-Format,首先要确保本机已安装Clang-Format,Mac OSX通过brew install clang-format安装,Linux的不同发行版本命令不一样,其中Manjaro可以通过sudo pacman -S clang-format安装;其次要把可执行文件clang-format的路径添加到PATH环境变量中。准备好之后,就可以使用下面这个命令生成格式文件:

1
clang-format -style=<coding-style> -dump-config > <file-name>

可以使用clang-format -help命令查看各个参数的含义,-style指出要导出的格式文件file-name是基于那种编码样式,当前可指定的有LLVM,Google,Chromium,Mozilla,WebKit。file-name一般命名为.clang-format

自定义样式

以Google样式举例,其中的大多数参数不需要修改,只有其中的几个参数需要按照自己的习惯进行修改,因为参数太多,没有必要一次性全部都理解。最好的方法就是格式化一个文件,看哪些地方不符合自己的要求,再修改对应的参数。举个例子,打开上一步生成的.clang-fromat文件,找到下面几行并修改成对应的参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# private public protected访问控制修饰符的偏移
AccessModifierOffset: -4

# 构造函数的初始化列表的缩进宽度
ConstructorInitializerIndentWidth: 8

# 延续的行的缩进宽度
ContinuationIndentWidth: 8

# 缩进的宽度
IndentWidth: 4

# tab的宽度
TabWidth: 4

更多参数的中文解释可以参考Clang-Format格式化选项介绍

总结

刚开始接触一个自己不熟悉的工具,可以以最简单的使用方式开始慢慢熟悉开始,不要一口气吞下一头大象,等这些简单的功能不能满足你的需求时,再进一步探索它更强大的功能。

参考文档

[1] Qt Creater中Clang-format的使用