如何指定与 CMAKE_CXX_CLANG_TIDY 变量一起使用的其他参数

How can I specify additional arguments for use with CMAKE_CXX_CLANG_TIDY variable

我正在尝试使用 make use of clang-tidy integration with cmake 并且我想传递 -check 参数。我尝试在调用 cmake 时添加 -DCMAKE_CXX_CLANG_TIDY="/usr/local/opt/llvm38/bin/clang-tidy-3.8;-checks=*",但我的 makefile 命令最终看起来像:

/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/.....

换句话说,好像是;分隔的 args 没有被分开解析。我也试过直接在我的目标上设置目标 属性 CXX_CLANG_TIDY 相同的值,我得到了相同的行为。

有没有人通过 cmake 使用额外的参数成功调用 clang-tidy

一切正确。 CMake 在生成 makefile 时不解析这些参数,而是在 执行 时解析这些参数。当文件编译成功后,会自动执行clang-tidy

您可以尝试直接在 CMakeLists.txt 中设置 CMAKE_CXX_CLANG_TIDY:
set(CMAKE_CXX_CLANG_TIDY "clang-tidy" "-checks=*")

它在 cmake 3.7.2 和 clang-tidy 4.0 中按预期工作。

例如直接在命令行指定:

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

或在 CMakeLists.txt:

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

您必须确保 clang-tidy 参数正确,否则它似乎会无提示地失败。