liba 0.1.15

An algorithm library based on C/C++
Documentation
#.rst:
# Findcppcheck
# ------------
#
# Find cppcheck executable.
#
# Result Variables
# ^^^^^^^^^^^^^^^^
#
# This module defines the following variables:
#
# ``CPPCHECK_FOUND``
#
# ``CPPCHECK_EXECUTABLE``
#
# ``CPPCHECK_VERSION``
#
# Functions
# ^^^^^^^^^
#
# .. command:: add_cppcheck
#
#   ::
#
#     add_cppcheck([OPTIONS opt] [TARGETS tgt ...] [tgt ...])
#
include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)
find_program(CPPCHECK_EXECUTABLE NAMES cppcheck)
mark_as_advanced(CPPCHECK_EXECUTABLE)

if(EXISTS "${CPPCHECK_EXECUTABLE}")
  execute_process(COMMAND ${CPPCHECK_EXECUTABLE} --version OUTPUT_VARIABLE CPPCHECK_VERSION)
  string(REGEX REPLACE ".*check ([^\n ]+).*" "\\1" CPPCHECK_VERSION "${CPPCHECK_VERSION}")
endif()

find_package_handle_standard_args(Cppcheck
  FOUND_VAR
    CPPCHECK_FOUND
  REQUIRED_VARS
    CPPCHECK_EXECUTABLE
  VERSION_VAR
    CPPCHECK_VERSION
)

if(CPPCHECK_FOUND)
  function(add_cppcheck)
    if(CMAKE_VERSION VERSION_LESS 3.10)
      return()
    endif()
    cmake_parse_arguments(CPPCHECK "" "" "TARGETS;OPTIONS" ${ARGN})
    list(APPEND CPPCHECK_TARGETS ${CPPCHECK_UNPARSED_ARGUMENTS})
    set_target_properties(${CPPCHECK_TARGETS} PROPERTIES C_CPPCHECK "${CPPCHECK_EXECUTABLE};${CPPCHECK_OPTIONS}")
    set_target_properties(${CPPCHECK_TARGETS} PROPERTIES CXX_CPPCHECK "${CPPCHECK_EXECUTABLE};${CPPCHECK_OPTIONS}")
  endfunction()
endif()