如何指定用于CMAKE_CXX_CLANG_TIDY变量的其他参数

时间:2016-11-05 00:31:48

标签: cmake clang-static-analyzer clang-tidy

我正在尝试使用clang-tidycmake的集成,我想传递-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其他args?

2 个答案:

答案 0 :(得分:3)

它与cmake 3.7.2和clang-tidy 4.0一样正常工作。

E.g。直接在命令行上指定:

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

或在CMakeLists.txt中:

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

你必须确保clang-tidy参数是正确的,否则它似乎无声地失败。

答案 1 :(得分:1)

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

您可以尝试直接在CMakeLists.txt中设置CMAKE_CXX_CLANG_TIDY:
Observable<Integer> dropdownChange = ReactiveUIObservables.selectionChange(myDropdown); ConnectableObservable<Integer> connectableDropdownChange = dropdownChange.publish(); connectableDropdownChange.subscribe(this::onDropdownChange); connectableDropdownChange.subscribe(this::doSomething); connectableDropdownChange.subscribe(this::doSomethingElse); // start emitting events connectableDropdownChange.connect();