如何指定与CMAKE_CXX_CLANG_TIDY变量一起使用的其他参数
问题描述:
我正在尝试使用clang-tidy与cmake的集成,我想通过-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=*")
嗯 - 这很有趣。当我在我的cmake文件中设置时,我几乎立即失败: '运行'/ usr/local/opt/llvm38/bin/clang-tidy-3.8'时出错。然而,没有关于失败的更多细节。如果我放弃“-checks = *”参数,构建似乎成功了,但我得到了clang-tidy的(可能是)默认行为。 –