问题
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?
回答1:
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.
回答2:
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=*")
来源:https://stackoverflow.com/questions/40433573/how-can-i-specify-additional-arguments-for-use-with-cmake-cxx-clang-tidy-variabl