如何指定 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 格式的文件?的主要内容,如果未能解决你的问题,请参考以下文章