Create userdata without user values in Lua 5.4
[liba.git] / cmake / Findcppcheck.cmake
blobe9822ba66ee0803c9632923451dbfaaa48e80c15
1 #.rst:
2 # Findcppcheck
3 # ------------
5 # Find cppcheck executable.
7 # Result Variables
8 # ^^^^^^^^^^^^^^^^
10 # This module defines the following variables:
12 # ``CPPCHECK_FOUND``
14 # ``CPPCHECK_EXECUTABLE``
16 # ``CPPCHECK_VERSION``
18 # Functions
19 # ^^^^^^^^^
21 # .. command:: add_cppcheck
23 #   ::
25 #     add_cppcheck([OPTIONS opt] [TARGETS tgt ...] [tgt ...])
27 include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
28 find_program(CPPCHECK_EXECUTABLE NAMES cppcheck)
29 mark_as_advanced(CPPCHECK_EXECUTABLE)
31 if(EXISTS "${CPPCHECK_EXECUTABLE}")
32   execute_process(COMMAND ${CPPCHECK_EXECUTABLE} --version OUTPUT_VARIABLE CPPCHECK_VERSION)
33   string(REGEX REPLACE ".*check ([^\n ]+).*" "\\1" CPPCHECK_VERSION "${CPPCHECK_VERSION}")
34 endif()
36 find_package_handle_standard_args(cppcheck
37   FOUND_VAR
38     CPPCHECK_FOUND
39   REQUIRED_VARS
40     CPPCHECK_EXECUTABLE
41   VERSION_VAR
42     CPPCHECK_VERSION
45 if(CPPCHECK_FOUND)
46   function(add_cppcheck)
47     if(CMAKE_VERSION VERSION_LESS 3.10)
48       return()
49     endif()
50     cmake_parse_arguments(CPPCHECK "" "" "TARGETS;OPTIONS" ${ARGN})
51     list(APPEND CPPCHECK_TARGETS ${CPPCHECK_UNPARSED_ARGUMENTS})
52     set_target_properties(${CPPCHECK_TARGETS} PROPERTIES C_CPPCHECK "${CPPCHECK_EXECUTABLE};${CPPCHECK_OPTIONS}")
53     set_target_properties(${CPPCHECK_TARGETS} PROPERTIES CXX_CPPCHECK "${CPPCHECK_EXECUTABLE};${CPPCHECK_OPTIONS}")
54   endfunction()
55 endif()