7

我正在尝试使用与cmake的clang-tidy集成,我想通过这个论点。我在调用 cmake 时尝试添加,但我的 makefile 命令最终看起来像:-check-DCMAKE_CXX_CLANG_TIDY="/usr/local/opt/llvm38/bin/clang-tidy-3.8;-checks=*"

/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使用相同的值直接在我的目标上设置目标属性,我得到了相同的行为。

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

4

2 回答 2

7

它与 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参数是正确的,否则它似乎会默默地失败。

于 2017-03-23T18:08:54.327 回答
1

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

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

于 2016-11-06T18:44:43.170 回答