Search code examples
cmakeclang-static-analyzerclang-tidy

How can I specify additional arguments for use with CMAKE_CXX_CLANG_TIDY variable


I'm trying to use make use of clang-tidy integration with cmake and I'd like to pass the -check argument. I've tried adding -DCMAKE_CXX_CLANG_TIDY="/usr/local/opt/llvm38/bin/clang-tidy-3.8;-checks=*" when invoking cmake, but my makefile commands end-up looking like:

/usr/local/Cellar/cmake/3.6.2/bin/cmake -E __run_iwyu --tidy="/usr/local/opt/llvm38/bin/clang-tidy-3.8;-checks=*" --source=/Users/ellery/work/.....

in other words, it seems like the ; separated args are not being parsed apart. I've also tried setting the target property CXX_CLANG_TIDY directly on my target with the same value and I get the same behavior.

Has anyone succesfully invoked clang-tidy with additional args through cmake?


Solution

  • It works as expected with cmake 3.7.2 and clang-tidy 4.0.

    E.g. directly specifying on the command line:

    cmake -DCMAKE_CXX_CLANG_TIDY="clang-tidy;-style=file;-checks=*"
    

    or in the CMakeLists.txt:

    set(CMAKE_CXX_CLANG_TIDY "clang-tidy;-style=file;-checks=*")
    

    You have to make sure that the clang-tidy arguments are correct, otherwise it seems to fail silently.