Cppcheck Cmake 集成:中止生成警告

Cppcheck Cmake integration: abort build on warning

我刚开始在 C++ 项目中使用 cppcheck,并了解到它可以集成到 cmake 中。 在我的 cmake 项目中,我通过

将其集成到 CMakeLists.txt 文件中
find_program(CMAKE_CXX_CPPCHECK NAMES cppcheck)
if(NOT CMAKE_CXX_CPPCHECK)
  message(FATAL_ERROR "Could not find the program cppcheck.")
endif()
list(APPEND CMAKE_CXX_CPPCHECK "--enable=all" )

现在,在编译过程中,cppcheck 运行良好。我已经为我所有的编译器警告设置了 -WError,有没有办法对 cppcheck 做同样的事情,即在抛出 cppcheck 警告的情况下使构建失败?

当 make 程序调用编译器、链接器或任何其他工具(如您的情况下的 cppcheck)等程序时,将计算程序的 return 值。如果任何程序 return 的值为 0,则 make 认为这是成功的,因此它会继续。如果任何程序 return 的另一个值是 0,那么 make 将失败并且不会继续。这是众所周知的惯例。因此,您所要做的就是配置 cppcheck,使其在成功的情况下 returns 0 和在失败的情况下另一个值。您可以使用参数 --error-exitcode=1:

来实现
list(APPEND CMAKE_CXX_CPPCHECK "--enable=all" "--error-exitcode=10")

来自 cppcheck 文档:

--error-exitcode=<n> If errors are found, integer [n] is returned instead of
                     the default '0'. '1' is returned
                     if arguments are not valid or if no input files are
                     provided. Note that your operating system can modify
                     this value, e.g. '256' can become '0'.

但是,如果有任何cppcheck的消息,这也会失败。您可能需要将 enable 开关调整为您感兴趣的严重程度 类。或者,您可以抑制消息,请参阅 cppcheck 命令行文档如何实现。