This project aims to provide a quick and easy way to integrate clang-format into your CMake project hosted in a git repository, it consists of three elements.
CMakeLists.txtprovides the customformattargetgit-pre-commit-hookblocks commits of unformatted C/C++ filesgit-cmake-format.pyis called by theformattarget or thepre-commithook, it queries git for edited files, then block the commit or formats the sources
There are three dependencies:
gitpython2.7+clang-format
To make use of this project you can either add it as a submodule to your
existing project, or copy the files into your repository. Now add the following
to your CMakeLists.txt.
add_subdirectory(/path/to/git-cmake-format)
Next you can generate your build system, assuming the required dependencies are available on your path.
cd build
cmake ..
The installation of the pre-commit hook is done at CMake time during the
generation of the build system, if you have followed these steps it is already
installed at /path/to/your/project/.git/hooks/pre-commit.
It is possible to specify the path to any of the executables this project depends upon using the following CMake variables.
GCF_GIT_PATH:STRING=/path/to/gitGCF_PYTHON_PATH:STRING=/path/to/pythonGCF_CLANGFORMAT_PATH:STRING=/path/to/clang-formatdefaults toclang-format
It is also possible to set the -style= command line argument for
clang-format with the following options, the default is file
GCF_CLANGFORMAT_STYLE:STRING=WebKit