Ubuntu 20.04下clang-format 10.0.0无法识别BraceBreakingStyle配置项的问题求助
解决clang-format 10.0.0中"BraceBreakingStyle"未知的问题
你遇到的问题其实是clang-format版本间配置项名称的变更导致的:
在clang-format 10.0.0及更早版本中,控制大括号换行风格的配置项名称是BreakBeforeBraces,而BraceBreakingStyle是在clang-format 11版本才被引入的(作为前者的别名,后续版本中逐步替换了旧名称)。这就是为什么你的10.0.0版本会识别不了这个新配置项。
快速解决方案
直接把命令中的BraceBreakingStyle替换为旧版的BreakBeforeBraces即可,修改后的命令如下:
clang-format -i BaseObject.cpp -style="{BasedOnStyle: google, BreakBeforeBraces: Allman}"
如果你想使用新配置项名称(可选)
如果更习惯BraceBreakingStyle这个新名称,你需要将clang-format升级到11或更高版本。在Ubuntu 20.04中,可以通过LLVM官方仓库来安装新版本:
- 添加LLPGPG密钥和仓库:
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-11 main" | sudo tee /etc/apt/sources.list.d/llvm-toolchain-focal-11.list
- 更新包列表并安装:
sudo apt update sudo apt install clang-format-11
- 可选:将新版本设置为默认的
clang-format:
sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-11 100
这样升级后,你原来的命令就能正常工作了。
内容的提问来源于stack exchange,提问作者lagarkane
相关产品推荐
相关产品推荐

