Qt Creator使用clang-format实现源代码格式化排版(Windows/macOS)

本篇先针对Windows系统来描述,末尾再补充macOS

1、clang官网下载clang-format.exe

LLVM Download Page  下载最新版本

Releases · llvm/llvm-project · GitHub

  • 方法1:完整版

我们需要从官网下载完整的LLVM编译器,Pre-Built Binaries,Windows (64-bit),LLVM-9.0.0-win64.exe。安装时,请勾选添加环境变量,Add  LLVM to the system PATH for all users。

安装完毕之后,把C:\Program Files\LLVM\bin目录下的clang-format文件和clang-tidy复制到某个文件夹里,比如

F:\Qt\Qt5.12.7\Tools\QtCreator\bin\clang\bin9\  这里的bin9是新建的文件夹,区别于原来的bin

  • 方法2:单独版

单独版就不需要从官网下载完整的LLVM编译器,因为完整版太大了,包含很多其他工具,没必要。

我们仅仅从LLVM Snapshot Builds,下载clang-format-2663a25f.exe即可,网页截图如下:

下载后把clang-format-2663a25f.exe拷贝到路径F:\Qt\Qt5.12.7\Tools\QtCreator\bin\clang\bin\

  • clang-format官方文档说明

Clang-Format Style Options — Clang 17.0.0git documentation

ClangFormat — Clang 17.0.0git documentation

如果你的电脑安装了VS2017以上版本,那么该版本自带了clang-format.exe,路径是C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\vcpackages

但是VS2017自带的clang-format的LLVM版本是v6.0,比较旧,不建议使用了。

2、Qt Creator Clang-Tidy设置

在Qt Creator里,点击Tools(工具)->Options(选项)->Analyzer(分析器),

在Clang-Tidy填写F:\Qt\Qt5.12.7\Tools\QtCreator\bin\clang\bin\clang-tidy.exe

Diagnostic configuration里选择Clang-Tidy and Clazy preselected checks [built-in]

3、Qt Creator Clang-format插件

  • Qt Creator,在Help栏里,选择About Plugins,勾上Beautifier,重启qtcreator;

  • 选择Tools->Options,点击左栏的Beautifier,选择Clang Format

  • Clang format的路径填写:F:\Qt\Qt5.12.7\Tools\QtCreator\bin\clang\bin\clang-format-2663a25f.exe

  • Options里选择use customized styleAdd新建一个配置,名称随意取,例如myclangconfig;

  • 重点来了,在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

然后再该文件的基础上,修改自己想要的参数。比如:

#https://clang.llvm.org/docs/ClangFormatStyleOptions.html
BasedOnStyle: Microsoft
AccessModifierOffset: -4
AlignConsecutiveMacros: true
AlignTrailingComments: true
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: false
BreakBeforeBraces: Allman
ColumnLimit: 0
SortIncludes: Never
SeparateDefinitionBlocks: Always
AllowShortLambdasOnASingleLine: Empty
LambdaBodyIndentation: OuterScope
BreakBeforeBraces: Custom
BraceWrapping:
    AfterCaseLabel: true
    BeforeLambdaBody: false
SpacesInLineCommentPrefix:
    Minimum: 0
    Maximum: 0

  • 通过菜单操作可以实现格式化

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


---

参考文献
clang-format常用配置 - 简书 clang-format常用配置

Clang-Format在 Mac上的安装与使用 - 简书 Clang-Format在 Mac上的安装与使用

VS Code C++ 代码格式化方法(clang-format)_vs code .clang-format_core571的博客-CSDN博客  C++ 代码格式化方法(clang-format)

FISCO-BCOS/.clang-format at master · FISCO-BCOS/FISCO-BCOS · GitHub

.clang-format · Gitee 极速下载/FISCO-BCOS - Gitee.com

另外也有提供给VS使用的clang-format插件,VS2017主菜单-工具-选项-文本编辑器-C/C++-格式设置。

ClangFormat - Visual Studio Marketplace

CodeBeautifier - Visual Studio Marketplace

不过VS我个人推荐使用CodeMaid插件

CodeMaid - Visual Studio Marketplace

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值