cmake_minimum_required(VERSION 3.22) project(format-demo) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) add_custom_command(OUTPUT main-formatted.cc DEPENDS main-unformatted.cc .clang-format .clang-tidy COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/main-unformatted.cc main-formatted.cc COMMAND clang-format-16 -i main-formatted.cc COMMAND clang-tidy-16 --fix --fix-notes -fix-errors -fix-errors -p ${CMAKE_CURRENT_BINARY_DIR} main-formatted.cc VERBATIM) add_custom_target(format DEPENDS main-formatted.cc COMMENT "Formatting and linting sources" SOURCES main-unformatted.cc ${CMAKE_CURRENT_BINARY_DIR}/main-formatted.cc .clang-format .clang-tidy VERBATIM)