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

问题描述:

我正在尝试使用clang-tidycmake的集成,我想通过-check参数。我试图调用cmake的时候加入-DCMAKE_CXX_CLANG_TIDY="/usr/local/opt/llvm38/bin/clang-tidy-3.8;-checks=*",但我的makefile命令最终看起来像:如何指定与CMAKE_CXX_CLANG_TIDY变量一起使用的其他参数

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

换句话说,它似乎像;分开的参数不会被分开。我也试着用相同的值直接在我的目标上设置目标属性CXX_CLANG_TIDY,并获得相同的行为。

是否有人通过cmake成功调用clang-tidy以及其他参数?

它的工作原理与cmake的3.7.2和铛,整齐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论点是正确的,否则它似乎静默失败。

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

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

+0

嗯 - 这很有趣。当我在我的cmake文件中设置时,我几乎立即失败: '运行'/ usr/local/opt/llvm38/bin/clang-tidy-3.8'时出错。然而,没有关于失败的更多细节。如果我放弃“-checks = *”参数,构建似乎成功了,但我得到了clang-tidy的(可能是)默认行为。 –