# KDEClangFormat

This module provides a functionality to format the source code of your repository according to a predefined KDE clang-format file.

This module provides the following function:

    kde_clang_format(<files>)

Using this function will create a clang-format target that will format all `<files>` passed to the function with the predefined KDE clang-format style. To format the files you have to invoke the target with `make clang-format` or `ninja clang-format`. Once the project is formatted it is recommended to enforce the formatting using a pre-commit hook, this can be done using `KDEGitCommitHooks`.

The `.clang-format` file from ECM will be copied to the source directory. This file should not be added to version control. It is recommended to add it to the `.gitignore` file: `/.clang-format`.

Since 5.79: If the source folder already contains a .clang-format file it is not overwritten. Since version 5.80 this function is called by default in `KDEFrameworkCompilerSettings`. If directories should be excluded from the formatting a .clang-format file with `DisableFormat: true` and `SortIncludes: false` should be created.

Example usage:

    include(KDEClangFormat)
    file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.hpp *.c)
    kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})

To exclude directories from the formatting add a `.clang-format` file in the directory with the following contents:

    DisableFormat: true
    SortIncludes: false

Since 5.64