project(clang-naming) cmake_minimum_required(VERSION 3.0) find_program( CLANG_TIDY_EXE NAMES clang-tidy-14 clang-tidy-13 clang-tidy-12 clang-tidy-11 clang-tidy-10 clang-tidy-9 clang-tidy) set(TESTS AbstractClass ClassConstant Class ClassMember ClassMethod Constant ConstantMember ConstantParameter ConstantPointerParameter ConstexprFunction ConstexprMethod ConstexprVariable EnumConstant Enum Function GlobalConstant GlobalConstantPointer GlobalFunction GlobalPointer GlobalVariable IgnoreMainLikeFunctions InlineNamespace LocalConstant LocalConstantPointer LocalPointer LocalVariable MacroDefinition Member Method Namespace Parameter ParameterPack PointerParameter PrivateMember PrivateMethod ProtectedMember ProtectedMethod PublicMember PublicMethod ScopedEnumConstant StaticConstant StaticVariable Struct TemplateParameter TemplateTemplateParameter TypeAlias Typedef TypeTemplateParameter Union ValueTemplateParameter Variable VirtualMethod ) add_custom_target(test ALL) foreach(T ${TESTS}) add_custom_target( ${T} COMMAND ${CMAKE_COMMAND} -E echo "Fomatting ${T}.cpp" COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/sources/${T}.cpp" "${CMAKE_BINARY_DIR}/${T}.cpp" COMMAND ${CLANG_TIDY_EXE} --fix -p ${CMAKE_BINARY_DIR} "${CMAKE_BINARY_DIR}/${T}.cpp" COMMAND ${CMAKE_COMMAND} -E compare_files "${CMAKE_SOURCE_DIR}/expected/${T}.cpp" "${CMAKE_BINARY_DIR}/${T}.cpp" ) add_dependencies(test ${T}) endforeach(T)