如何指定 clang 格式的文件?

Posted

技术标签:

【中文标题】如何指定 clang 格式的文件?【英文标题】:How do I specify a clang-format file? 【发布时间】:2018-03-04 13:44:44 【问题描述】:

我刚刚在 Redhat 6 机器上构建了 clang 5.0.0 并尝试运行 clang-format。我无法让 -style 选项读取样式文件。这是我认为应该起作用的一组命令的示例:

./clang-format -style=llvm -dump-config > .llvm-format
./clang-format -style=.llvm-format ~/myFile.cc

当我运行此命令时,我收到以下错误:

Invalid value for -style

当按预期放置在父目录中时,它似乎可以找到并使用 .clang-format。内置类型也可以工作:

./clang-format -style=Mozilla ~/myFile.cc

那么,问题是我无法明确指定要使用的 .clang 格式文件。这是我的构建问题还是我误用了 clang-format oir 误解了文档?

【问题讨论】:

更新了这个错误:bugs.llvm.org/show_bug.cgi?id=20753 【参考方案1】:

只是一个额外的提示: (在我的情况下,在 Windows 10 上) - 如果您将配置转储到文件中,请在之后检查 ascii 编码,例如在记事本++ - .clang 格式的文件必须是没有 BOM 的 utf8 !!! (您可以在 Notepadd++ 中进行转换) - 否则您会收到类似“YAML:1:4: error: Got empty plain scalar”之类的错误 - 将 .clang-format 文件放在同一文件夹或 code-file.c 的父目录中

格式化 code-file.c 的正确命令行调用如下所示: clang-format.exe -style=file -i C:\path\code-file.c

【讨论】:

【参考方案2】:

我也对此感到困惑。当他们告诉您使用标志-style=file 时,他们的字面意思是让您输入-style=file,而不是-style=<path/to/actual/filename>

使用此标志,clang-format 将在目标文件的目录中查找名为 .clang-format 的文件。如果它没有找到任何它会cd .. 并重试。似乎没有办法告诉clang-format 使用名称不完全是.clang-format 的文件。

您的示例的正确用法是:

./clang-format -style=llvm -dump-config > ~/.clang-format
./clang-format -style=file ~/myFile.cc

【讨论】:

这是迄今为止我听过的最愚蠢的实现之一。至少我每天都在哭……

以上是关于如何指定 clang 格式的文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何获得Xcode 8的clang格式?

如何获得 Xcode 8 的 clang 格式?

如何使用 clang 格式自动缩进具有 4 个空格的 C++ 类?

如何以clang格式创建外部标题的类别?

clang 格式:禁用排序包括

如何正确禁用包括按clang格式排序?