diff --git a/CMLibClangTidy.cmake b/CMLibClangTidy.cmake new file mode 100644 index 0000000..80fc6a0 --- /dev/null +++ b/CMLibClangTidy.cmake @@ -0,0 +1,21 @@ +function(add_clang_tidy_check) + list(GET ARGN 0 _target) + set(_sources ${ARGN}) + list(REMOVE_AT _sources 0) + + option(CLANG_TIDY_FIX "Perform fixes for Clang-Tidy" OFF) + find_program(CLANG_TIDY_EXE + NAMES clang-tidy-9 clang-tidy-8 clang-tidy-7 clang-tidy-6.0 clang-tidy) + if(CLANG_TIDY_EXE) + if(CLANG_TIDY_FIX) + list(APPEND _args "-fix") + endif() + add_custom_target(clang-tidy-check + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + COMMAND ${CLANG_TIDY_EXE} -extra-arg="-Wno-unknown-warning-option" -p ${CMAKE_BINARY_DIR} ${_sources}) + add_dependencies(clang-tidy-check ${_target}) + else() + message(WARNING "ClangTidy is not found") + endif() +endfunction() + diff --git a/CMLibCommon.cmake b/CMLibCommon.cmake index 7523951..5590f9c 100644 --- a/CMLibCommon.cmake +++ b/CMLibCommon.cmake @@ -31,6 +31,7 @@ include(CMLibCommonTargetProperties) include(CMLibCommonLibraryTarget) include(CMLibBuildTypes) include(CMLibCodeAnalysisPvsStudio) +include(CMLibClangTidy) include(cotire) include(CMLibBreathe)