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 命令行文档如何实现。
我刚开始在 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 命令行文档如何实现。