重点来了,在Value里,输入以下部分;
# 编程语言: None, Cpp, Java, JavaScript, ObjC, Proto, TableGen, TextProto Language: Cpp # 基础样式 BasedOnStyle: Google #指针的*的挨着哪边,例如int* a DerivePointerAlignment: false PointerAlignment: Left # 访问修饰符前的空格,例如public,private等 AccessModifierOffset: -4 # 缩进宽度 IndentWidth: 4 # 要保留的最大连续空行数 MaxEmptyLinesToKeep: 1 # 大括号{}的换行方式,数值是Allman或Attach BreakBeforeBraces: Allman # 是否允许短方法单行,例如int f() { return 0; } AllowShortFunctionsOnASingleLine: true # 支持一行的if,例如值为true,则可以放在一行上。if (a) return; AllowShortIfStatementsOnASingleLine: false # 在未封闭(括号的开始和结束不在同一行)的括号中的代码是否对齐,为true,则将参数在左方括号后水平对齐 AlignAfterOpenBracket: true # switch的case缩进 IndentCaseLabels: false # 针对OC的block的缩进宽度 ObjCBlockIndentWidth: 4 # 针对OC,属性名后加空格 ObjCSpaceAfterProperty: true # 每行字符的长度 ColumnLimit: 0 # 注释对齐 AlignTrailingComments: true # 括号后加空格,例如(int) i; SpaceAfterCStyleCast: false # 换行的时候对齐操作符 AlignOperands: true # 中括号两边空格 [] SpacesInSquareBrackets: false # 多行声明语句按照=对齐 AlignConsecutiveDeclarations: false # 容器类的空格 例如 OC的字典 SpacesInContainerLiterals: false # 在构造函数初始化时按逗号断行,并以冒号对齐 BreakConstructorInitializersBeforeComma: true # 函数参数换行 AllowAllParametersOfDeclarationOnNextLine: true #在续行(#下一行)时的缩进长度 ContinuationIndentWidth: 4 # tab键盘的宽度 TabWidth: 4 # 赋值运算符前加空格 SpaceBeforeAssignmentOperators: true # 行尾的注释前加1个空格 SpacesBeforeTrailingComments: 1
点击确认按钮之后,最终会在路径C:\Users\<用户名>\AppData\Roaming\QtProject\qtcreator\beautifier\clangformat\myclangconfig生成.clang-format文件。如果该文件使用了中文注释,那么就需要手动另存为UTF-8的编码,否则格式化时会报错:error: Got empty plain scalar。
还有一个更好的办法,先进入路径C:\Users\<用户名>\AppData\Roaming\QtProject\qtcreator\beautifier\clangformat\myclangconfig,然后在命令行终端输入以下命令,可以生成参数模板.clang-format文件
clang-format-2663a25f.exe -style=Microsoft -dump-config > .clang-format
然后再该文件的基础上,修改自己想要的参数。比如:
BasedOnStyle: Microsoft AccessModifierOffset: -4 AlignConsecutiveMacros: true AlignTrailingComments: true AllowShortFunctionsOnASingleLine: Inline AllowShortIfStatementsOnASingleLine: false BreakBeforeBraces: Allman ColumnLimit: 0
详细的变量说明请参见clang官网https://clang.llvm.org/docs/ClangFormatStyleOptions.html
也可以看看效果 https://clangformat.com/
Google C++ Style Guide https://google.github.io/styleguide/cppguide.html
选择Tools->Options,点击左栏的Beautifier,选择General;勾选Enable auto format on save file;Tool选择ClangFormat。
通过菜单操作可以实现格式化
4、设置clang-format快捷键(可有可无)
点击Tools->Options->Environment->Keyboard;
在Filer里输入clang,滤掉一部分方便查找,然后想要的出现了;
选上FormatFile,点下那一栏就行了;
在Key sequence里手动打入Ctrl+shift+k,当然点击右边的Record按钮,按钮会变成stop recording,再在键盘上按照Ctrl->shift->k的顺序按下去,前面两个键按住了不要松,等到按到k再松开,然后快捷键栏里面会出现Ctrl+shift+k,点击stop recording,点击保存。
再补充macOS的用法
官网下载Pre-Built Binaries中macOS版本的tar-xz文件,大小300+M,注:点击macOS而不是后面的(.sig)
clang+llvm-9.0.1-x86_64-apple-darwin.tar.xz
解压
把/clang+llvm-9.0.1-x86_64-apple-darwin/bin目录下的clang-format文件和clang-tidy复制到某个文件夹里,比如
/Users/<username>/Qt5.12.7/Qt Creator.app/Contents/Resources/libexec/clang/bin9/clang-tidy
/Users/<username>/Qt5.12.7/Qt Creator.app/Contents/Resources/libexec/clang/bin9/clang-format
这里的bin9是新建的文件夹,区别于原来的bin
设置QtCreator,clang-format和clang-tidy分别指向该路径
配置clang-format的格式化风格,.clang-format文件最终会保存在:
/Users/<username>/.config/QtProject/qtcreator/beautifier/clangformat
姊妹篇
《VS2019使用clang-format实现源代码格式化排版》
https://libaineu2004.blog.csdn.net/article/details/112760035
---
参考文献
https://www.jianshu.com/p/e8e0158258f0 clang-format常用配置
https://www.jianshu.com/p/ba7aa6a2e4d1 Clang-Format在 Mac上的安装与使用
https://blog.csdn.net/core571/article/details/82867932 C++ 代码格式化方法(clang-format)
https://github.com/FISCO-BCOS/FISCO-BCOS/blob/master/.clang-format
https://gitee.com/mirrors/FISCO-BCOS/blob/master/.clang-format
另外也有提供给VS使用的clang-format插件,VS2017主菜单-工具-选项-文本编辑器-C/C++-格式设置。
https://marketplace.visualstudio.com/items?itemName=LLVMExtensions.ClangFormat
https://marketplace.visualstudio.com/items?itemName=MariuszBrzeski.CodeBeautifier
不过VS我个人推荐使用CodeMaid插件
https://marketplace.visualstudio.com/items?itemName=SteveCadwallader.CodeMaid