How can I specify additional arguments for use with CMAKE_CXX_CLANG_TIDY variable

邮差的信 提交于 2019-12-06 04:47:13

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!