| --- |
| short-description: Code formatting |
| ... |
| |
| # clang-format |
| |
| *Since 0.50.0* |
| |
| When `clang-format` is installed and a `.clang-format` file is found at the main |
| project's root source directory, Meson automatically adds a `clang-format` target |
| that reformat all C and C++ files (currently only with Ninja backend). |
| |
| ```sh |
| ninja -C builddir clang-format |
| ``` |
| |
| *Since 0.58.0* |
| |
| It is possible to restrict files to be reformatted with optional |
| `.clang-format-include` and `.clang-format-ignore` files. |
| |
| The file `.clang-format-include` contains a list of patterns matching the files |
| that will be reformatted. The `**` pattern matches this directory and all |
| subdirectories recursively. Empty lines and lines starting with `#` are ignored. |
| If `.clang-format-include` is not found, the pattern defaults to `**/*` which |
| means all files recursively in the source directory but has the disadvantage to |
| walk the whole source tree which could be slow in the case it contains lots of |
| files. |
| |
| Example of `.clang-format-include` file: |
| ``` |
| # All files in src/ and its subdirectories |
| src/**/* |
| |
| # All files in include/ but not its subdirectories |
| include/* |
| ``` |
| |
| The file `.clang-format-ignore` contains a list of patterns matching the files |
| that will be excluded. Files matching the include list (see above) that match |
| one of the ignore pattern will not be reformatted. Unlike include patterns, ignore |
| patterns does not support `**` and a single `*` match any characters including |
| path separators. Empty lines and lines starting with `#` are ignored. |
| |
| The build directory and file without a well known C or C++ suffix are always |
| ignored. |
| |
| Example of `.clang-format-ignore` file: |
| ``` |
| # Skip C++ files in src/ directory |
| src/*.cpp |
| ``` |
| |
| Note that `.clang-format-ignore` has the same format as used by |
| [`run-clang-format.py`](https://github.com/Sarcasm/run-clang-format). |
| |
| A new target `clang-format-check` has been added. It returns an error code if |
| any file needs to be reformatted. This is intended to be used by CI. |
| |
| *Since 0.60.0* |
| |
| If `.clang-format-include` file is missing and source files are in a git |
| repository, only files tracked by git will be included. |