Как вызвать clang-format через папку проекта cpp?

есть ли способ вызвать что-то вроде этого "clang-format --style=Webkit" над папкой проекта cpp, а не запускать его отдельно внутри каждого кода?

Я использую clang-format.py и ВИМ, чтобы сделать это. Но я предполагаю, что есть более простой способ применить это один раз.

4 ответов


о:

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

в папке проекта. Опция-i делает его на месте (по умолчанию форматированный вывод записывается в stdout).


к сожалению, рекурсивно применить clang-формат невозможно. *.cpp будет соответствовать только файлам в текущем каталоге, а не подкаталогам. Даже **/* не работает.

к счастью, есть решение: захватить все имена файлов с find команда и труба их. Например, если вы хотите отформатировать весь .h и .cpp файлы в директории foo/bar/ рекурсивно, вы можете сделать

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

посмотреть здесь дополнительные обсуждение.


создать .clang-format файл, если он не существует:

clang-format -style=WebKit -dump-config > .clang-format
выполнить:
find . -regex '.*\.\(cpp\|hpp\|cc\|cxx\)' -exec clang-format -style=file -i {} \;

недавно я нашел bash-скрипт, который делает именно то, что вам нужно:

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

это скрипт bash, который будет работать clang-format -i на ваш код.

характеристики:

  • находит правильный путь к clang-format на Ubuntu / Debian, который кодирует версию LLVM в clang-format имя файла
  • исправлены файлы рекурсивно
  • обнаруживает наиболее распространенные расширения файлов, используемые проектами C/C++

В Windows я успешно использовал его в Git Bash и WSL.