# Distributed under the OSI-approved BSD 3-Clause License. See accompanying # file Copyright.txt or https://cmake.org/licensing for details. #----------------------------------------------------------------------------- # CMake uses KWStyle for checking the coding style # Search for a built-from-source KWStyle under Dashboards/Support on a typical # dashboard machines: # set(home "$ENV{HOME}") if(NOT home) string(REPLACE "\\" "/" home "$ENV{USERPROFILE}") endif() find_program(KWSTYLE_EXECUTABLE NAMES KWStyle PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Kitware Inc.\\KWStyle 1.0.0]/bin" "${home}/Dashboards/Support/KWStyle/bin" ) mark_as_advanced(KWSTYLE_EXECUTABLE) set(CMAKE_USE_KWSTYLE_DEFAULT OFF) if(KWSTYLE_EXECUTABLE) set(CMAKE_USE_KWSTYLE_DEFAULT ON) endif() option(CMAKE_USE_KWSTYLE "Add StyleCheck target and KWStyle test: run KWStyle to check for coding standard violations." ${CMAKE_USE_KWSTYLE_DEFAULT}) mark_as_advanced(CMAKE_USE_KWSTYLE) if(CMAKE_USE_KWSTYLE) option(KWSTYLE_USE_VIM_FORMAT "Set KWStyle to generate errors with a VIM-compatible format." OFF) option(KWSTYLE_USE_MSVC_FORMAT "Set KWStyle to generate errors with a VisualStudio-compatible format." OFF) mark_as_advanced(KWSTYLE_USE_VIM_FORMAT) mark_as_advanced(KWSTYLE_USE_MSVC_FORMAT) if(KWSTYLE_USE_VIM_FORMAT) set(KWSTYLE_ARGUMENTS -vim ${KWSTYLE_ARGUMENTS}) endif() if(KWSTYLE_USE_MSVC_FORMAT) set(KWSTYLE_ARGUMENTS -msvc ${KWSTYLE_ARGUMENTS}) endif() configure_file(${CMake_SOURCE_DIR}/Utilities/KWStyle/CMake.kws.xml.in ${CMake_BINARY_DIR}/CMake.kws.xml) configure_file(${CMake_SOURCE_DIR}/Utilities/KWStyle/CMakeMoreChecks.kws.xml.in ${CMake_BINARY_DIR}/CMakeMoreChecks.kws.xml) configure_file(${CMake_SOURCE_DIR}/Utilities/KWStyle/CMakeFiles.txt.in ${CMake_BINARY_DIR}/CMakeKWSFiles.txt) add_custom_command( OUTPUT ${CMake_BINARY_DIR}/KWStyleReport.txt COMMAND ${KWSTYLE_EXECUTABLE} ARGS -xml ${CMake_BINARY_DIR}/CMake.kws.xml -o ${CMake_SOURCE_DIR}/Utilities/KWStyle/CMakeOverwrite.txt -v ${KWSTYLE_ARGUMENTS} -D ${CMake_BINARY_DIR}/CMakeKWSFiles.txt COMMENT "Coding Style Checker" ) add_custom_target(MoreStyleChecks COMMAND ${KWSTYLE_EXECUTABLE} -xml ${CMake_BINARY_DIR}/CMakeMoreChecks.kws.xml -html ${CMake_BINARY_DIR}/html -o ${CMake_SOURCE_DIR}/Utilities/KWStyle/CMakeOverwrite.txt -v ${KWSTYLE_ARGUMENTS} -D ${CMake_BINARY_DIR}/CMakeKWSFiles.txt COMMENT "Coding Style Checker, more checks enabled" ) add_custom_target(StyleCheck DEPENDS ${CMake_BINARY_DIR}/KWStyleReport.txt) endif()