CMAKE_CXX_CLANG_TIDY:避免发出lang铛诊断错误来中断构建

时间:2018-10-31 20:18:50

标签: c++ cmake clang-tidy

我正在使用clang-tidy作为linter(cmake -DCMAKE_CXX_CLANG_TIDY = clang-tidy)构建C ++项目。

更新系统后(我相信Fedora 28-> 29,cmake 3.11-> 3.12),当clang-tidy报告一些clang-diagnostic-error(我现在无法修复...)时,我将无法再构建任何文件。 。我很确定clang-diagnostic-error不会早点中断构建……但是我不能百分百确定。

编辑:更改发生在clang-tidy中,现在发现错误时它返回一个非零的退出代码。

是否可以抑制这些错误,就像“ -warnings-as-errors”的反面一样?

1 个答案:

答案 0 :(得分:1)

不确定是解决方案还是解决方法,但这可以解决问题(在我的操作系统中...):

cmake -DCMAKE_CXX_CLANG_TIDY="${PATH_TO_SCRIPT}/suppress_exit_status.sh;clang-tidy"

脚本的PATH_TO_SCRIPT是exclude_exit_status.sh的绝对路径,如下所示:

#!/bin/sh
$@||echo Command \"$@\" failed with exit code $?

||如果是“或”运算符,则仅在第一个操作数失败时才执行第二个操作数。看来cmake会从命令中捕获标准错误并将其抛出,从而导致错误消息。

我想不出一种更优雅的方法,无法将||直接扔进CMAKE_CXX_CLANG_TIDY。