diff --git a/cmake/clang-tidy.cmake b/cmake/clang-tidy.cmake index a7573ed0..ce61faad 100644 --- a/cmake/clang-tidy.cmake +++ b/cmake/clang-tidy.cmake @@ -1,15 +1,18 @@ -option(ENABLE_CLANG_TIDY "Add run-clang-tidy automatically to builds" OFF) +option(SPDLOG_ENABLE_TIDY "Add clang-tidy automatically as prebuild step" OFF) + find_program(CLANG_TIDY_EXE - NAMES run-clang-tidy.py run-clang-tidy run-clang-tidy-7 - HINTS ${CMAKE_CURRENT_SOURCE_DIR}/scripts + NAMES clang-tidy clang-tidy-7 DOC "Path to clang-tidy executable") +find_program(CLANG_TIDY_RUNNER + NAMES run-clang-tidy run-clang-tidy-7 run-clang-tidy.py + HINTS ${CMAKE_CURRENT_SOURCE_DIR}/scripts) if(CLANG_TIDY_EXE) message(STATUS "clang-tidy found: ${CLANG_TIDY_EXE}") set(DCMAKE_EXPORT_COMPILE_COMMANDS ON) set(CLANG_TIDY_CMD ${CLANG_TIDY_EXE}) message(STATUS "cmake source dir: ${CMAKE_CURRENT_SOURCE_DIR}") - if(ENABLE_CLANG_TIDY) + if(SPDLOG_ENABLE_TIDY) # NOTE: the project config file .clang-tidy is not found if the # binary tree is not part of the source tree! CK set(CMAKE_CXX_CLANG_TIDY ${CLANG_TIDY_CMD} CACHE STRING "" FORCE) @@ -17,20 +20,22 @@ if(CLANG_TIDY_EXE) set(CMAKE_CXX_CLANG_TIDY "" CACHE STRING "" FORCE) # delete it endif() - if(NOT TARGET check) - add_custom_target(check) - message(STATUS "check target added") - set_target_properties(check PROPERTIES EXCLUDE_FROM_ALL TRUE) - endif() + if(CLANG_TIDY_RUNNER) + if(NOT TARGET check) + add_custom_target(check) + message(STATUS "check target added") + set_target_properties(check PROPERTIES EXCLUDE_FROM_ALL TRUE) + endif() - add_custom_command(TARGET check PRE_BUILD - # -p BUILD_PATH Path used to read a compile command database (compile_commands.json). - # NOTE: we use defaults checks from .clang-tidy and examples only! - COMMAND ${CLANG_TIDY_EXE} -p ${CMAKE_CURRENT_BINARY_DIR} ### ${CMAKE_CURRENT_SOURCE_DIR}/example - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" # location of compile_commands.json - COMMENT "Running check on targets at ${CMAKE_CURRENT_SOURCE_DIR} ..." - VERBATIM - ) + add_custom_command(TARGET check PRE_BUILD + # -p BUILD_PATH Path used to read a compile command database (compile_commands.json). + # NOTE: we use defaults checks from .clang-tidy and examples only! + COMMAND ${CLANG_TIDY_RUNNER} -p ${CMAKE_CURRENT_BINARY_DIR} ### ${CMAKE_CURRENT_SOURCE_DIR}/example + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" # location of compile_commands.json + COMMENT "Running check on targets at ${CMAKE_CURRENT_SOURCE_DIR} ..." + VERBATIM + ) + endif() else() - message(AUTHOR_WARNING "run-clang-tidy not found!") + message(AUTHOR_WARNING "clang-tidy not found!") endif()