当前位置: 首页 > 网络知识

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

时间:2026-01-29 09:26:30

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

1、clang官网下载clangformat.exe

LLVM Download Page 下载最新版本

Releases · llvm/llvmproject · GitHub

方法1:完整版
我们需要从官网下载完整的LLVM编译器,PreBuilt Binaries,Windows (64bit),LLVM9.0.0win64.exe。安装时,请勾选添加环境变量,Add LLVM to the system PATH for all users。

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

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

方法2:单独版

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

我们仅仅从LLVM Snapshot Builds,下载clangformat26a25f.exe即可,网页截图如下:

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

clangformat官方文档说明

ClangFormat Style Options — Clang 17.0.0git documentation

ClangFormat — Clang 17.0.0git documentation

如果你的电脑安装了VS2017以上版本,那么该版本自带了clangformat.exe,路径是C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Cmon7\IDE\VC\vcpackages但是VS2017自带的clangformat的LLVM版本是v6.0,比较旧,不建议使用了。

2、Qt Creator ClangTidy设置

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

在ClangTidy填写F:\Qt\Qt5.12.7\Tools\QtCreator\bin\clang\bin\clangtidy.exe

在Diagnostic configuration里选择ClangTidy and Clazy preselected checks [builtin]。

3、Qt Creator Clangformat插件

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

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

Clang format的路径填写:F:\Qt\Qt5.12.7\Tools\QtCreator\bin\clang\bin\clangformat26a25f.exe

在Options里选择use custized style,Add新建一个配置,名称随意取,例如myclangconfig;

重点来了,在Value里,输入以下部分;

1 # 编程语言: None, Cpp, Java, JavaScript, ObjC, Proto, TableGen, TextProto 2 Language: Cpp 3 # 基础样式 4 BasedOnStyle: Google 5 #指针的*的挨着哪边,例如int* a 6 DerivePointerAlignment: false 7 PointerAlignment: Left 8 # 访问修饰符前的空格,例如public,private等 9 AccessModifierOffset: 4 10 # 缩进宽度 11 IndentWidth: 4 12 # 要保留的最大连续空行数 13 MaxEmptyLinesToKeep: 1 14 # 大括号的换行方式,数值是Allman或Attach 15 BreakBeforeBraces: Allman 16 # 是否允许短方法单行,例如int f() 17 AllowShortFunctionsOnASingleLine: true 18 # 支持一行的if,例如值为true,则可以放在一行上。if (a) return; 19 AllowShortIfStatementsOnASingleLine: false 20 # 在未封闭(括号的开始和结束不在同一行)的括号中的代码是否对齐,为true,则将参数在左方括号后水平对齐 21 AlignAfterOpenBracket: true 22 # switch的case缩进 23 IndentCaseLabels: false 24 # 针对OC的block的缩进宽度 25 ObjCBlockIndentWidth: 4 26 # 针对OC,属性名后加空格 27 ObjCSpaceAfterProperty: true 28 # 每行字符的长度 29 ColumnLimit: 0 30 # 注释对齐 31 AlignTrailingCments: true 32 # 括号后加空格,例如(int) i; 33 SpaceAfterCStyleCast: false 34 # 换行的时候对齐操作符 35 AlignOperands: true 36 # 中括号两边空格 [] 37 SpacesInSquareBrackets: false 38 # 多行声明语句按照=对齐 39 AlignConsecutiveDeclarations: false 40 # 容器类的空格 例如 OC的字典 41 SpacesInContainerLiterals: false 42 # 在构造函数初始化时按逗号断行,并以冒号对齐 43 BreakConstructorInitializersBeforeCma: true 44 # 函数参数换行 45 AllowAllParametersOfDeclarationOnNextLine: true 46 #在续行(#下一行)时的缩进长度 47 ContinuationIndentWidth: 4 48 # tab键盘的宽度 49 TabWidth: 4 50 # 赋值运算符前加空格 51 SpaceBeforeAssignmentOperators: true 52 # 行尾的注释前加1个空格 53 SpacesBeforeTrailingCments: 1

点击确认按钮之后,最终会在路径C:\Users\<用户名>\AppData\Roaming\QtProject\qtcreator\beautifier\clangformat\myclangconfig生成langformat文件。如果该文件使用了中文注释,那么就需要手动另存为UTF8的编码,否则格式化时会报错:error: Got empty plain scalar。

还有一个更好的办法,先进入路径C:\Users\<用户名>\AppData\Roaming\QtProject\qtcreator\beautifier\clangformat\myclangconfig,然后在命令行终端输入以下命令,可以生成参数模板langformat文件
clangformat26a25f.exe style=Microsoft dumpconfig > langformat

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

1 #clang.llvm/docs/ClangFormatStyleOptions 2 BasedOnStyle: Microsoft 3 AccessModifierOffset: 4 4 AlignConsecutiveMacros: true 5 AlignTrailingCments: true 6 AllowShortFunctionsOnASingleLine: Inline 7 AllowShortIfStatementsOnASingleLine: false 8 BreakBeforeBraces: Allman 9 ColumnLimit: 0 10 SortIncludes: Never 11 SeparateDefinitionBlocks: Always 12 AllowShortLambdasOnASingleLine: Empty 13 LambdaBodyIndentation: OuterScope 14 BreakBeforeBraces: Cust 15 BraceWrapping: 16 AfterCaseLabel: true 17 BeforeLambdaBody: false 18 SpacesInLineCmentPrefix: 19 Minimum: 0 20 Maximum: 0

详细的变量说明请参见clang官网ClangFormat Style Options — Clang 17.0.0git documentation

也可以看看效果clangformat/

Google C++ Style GuideGoogle C++ Style Guide

选择Tools>Options,点击左栏的Beautifier,选择General;勾选Enable auto format on save file;Tool选择ClangFormat。

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

4、设置clangformat快捷键(可有可无)

再补充macOS的用法

  官网下载PreBuilt Binaries中macOS版本的tarxz文件,大小300+M,注:点击macOS而不是后面的(.sig)
  clang+llvm9.0.1x86_64appledarwin.tar.xz

解压
  把/clang+llvm9.0.1x86_64appledarwin/bin目录下的clangformat文件和clangtidy复制到某个文件夹里,比如
  /Users/<username>/Qt5.12.7/Qt Creator.app/Contents/Resources/libexec/clang/bin9/clangtidy
  /Users/<username>/Qt5.12.7/Qt Creator.app/Contents/Resources/libexec/clang/bin9/clangformat

这里的bin9是新建的文件夹,区别于原来的bin

  设置QtCreator,clangformat和clangtidy分别指向该路径
  配置clangformat的格式化风格,langformat文件最终会保存在:
  /Users/<username>/onfig/QtProject/qtcreator/beautifier/clangformat



上一篇:FileZilla 免费的FTP软件工具下载与使用教程
下一篇:Qt 使用QCryptographicHash做简单的数据加密
Qt
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素