2015-03-06 2 views

Antwort

15

Was:

clang-format -i -style=WebKit *.cpp 

im Projektordner. Die Option -i macht es inplace (standardmäßig wird die formatierte Ausgabe in stdout geschrieben).

+0

oder wenn Sie eine Konfigurationsdatei verwenden und wollen mehrere Dateitypen zu formatieren: 'clang-format-3.6 -i-style = Datei * .cpp * .h * .hpp' – mBardos

+4

Leider wird das nicht in Unterverzeichnisse rekurrieren. – Antimony

+1

Ja, * .cpp wird durch die Shell erweitert. Clang benötigt nur eine Liste von Dateien. Weitere erweiterte Optionen (wie rekursives Globbing) hängen von den Features Ihrer Shell ab. Siehe http://unix.stackexchange.com/questions/49913/recursive-glob zur Verwendung von '**' construct. – sbarzowski

26

Leider gibt es keine Möglichkeit, das Clang-Format rekursiv anzuwenden. *.cpp passt nur Dateien im aktuellen Verzeichnis, nicht Unterverzeichnisse. Selbst **/* funktioniert nicht.

Zum Glück gibt es eine Lösung:. Alle Dateinamen greifen mit dem find Befehl und Rohr sie in zum Beispiel, wenn Sie alle .h und .cpp Dateien im Verzeichnis foo/bar/ rekursiv formatieren möchten, können Sie tun

find foo/bar/ -iname *.h -o -iname *.cpp | xargs clang-format -i 

Weitere Informationen finden Sie unter here.

+2

Nun, '**/*. Cpp' scheint in (einigermaßen moderner) bash zu funktionieren. Sie müssen möglicherweise vorher 'shoppen -s globstar'. – sbarzowski

+1

Wenn Sie CMake verwenden, [diesen Beitrag] (http: //www.labri.fr/perso/fleury/posts/programmierung/using-clang-ordentlich-und-kling-format.html) zeigt Ihnen, wie Sie CMake's ['GLOB_RECURSE'] (https://cmake.org/cmake/help/latest /command/file.html) um alle '.cpp' Dateien zu finden und an' clang-format' zu übergeben. – phoenix

+1

Die Kombination von 'find' und' xargs' sollte 'find ... -print0' und' xargs -0 ... 'verwenden, um sicherzustellen, dass alle Arten von Dateinamen korrekt behandelt werden. – Alexander

1

Vor kurzem fand ich ein Bash-Skript, das genau das tut, was Sie brauchen:

https://github.com/eklitzke/clang-format-all

Dies ist ein Bash-Skript, das clang-format -i auf Ihrem Code ausgeführt wird. Eigenschaften

:

  • Findet den richtigen Weg zu clang-format auf Ubuntu/Debian, die die LLVM-Version im clang-format Dateinamen kodieren
  • Fixes Dateien rekursiv
  • Ermittelt die häufigsten verwendeten Dateierweiterungen von C/C++ Projekte

Unter Windows ich es erfolgreich in Git Bash verwendet und WSL.

0

zunächst eine .clang-format-Datei erstellen, wenn es nicht existiert:

clang-format -style=Chromium -dump-config > .clang-format 

Dann laufen:

find . -regex '.*\.\(cpp\|hpp\|cc\|cxx\)' -exec clang-format -style=file -i {} \; 
Verwandte Themen