Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 829
Mike Ellery Avatar asked Nov 05 '16 00:11

Mike Ellery


2 Answers

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.

like image 50
misev Avatar answered Nov 09 '22 05:11

misev


Everything is correct. CMake does not parse those arguments when generating the makefile, but when the makefile is executed. When a file was successful compiled, then clang-tidy will be executed automatically.

You could try setting CMAKE_CXX_CLANG_TIDY directly in your CMakeLists.txt:
set(CMAKE_CXX_CLANG_TIDY "clang-tidy" "-checks=*")

like image 32
Kevsoft Avatar answered Nov 09 '22 03:11

Kevsoft