make_tests.cmake 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. find_package(Catch2 REQUIRED)
  2. set(TESTCASE_PREFIX "test-${library_MODULE}")
  3. get_filename_component(folder_name ${CMAKE_CURRENT_SOURCE_DIR} NAME)
  4. string(REPLACE " " "_" folder_name ${folder_name})
  5. enable_testing()
  6. message("*****************************************************")
  7. message("UNIT TESTS:")
  8. message("*****************************************************")
  9. # Find all files named unit-*.cpp
  10. file(GLOB files "unit-*.cpp")
  11. foreach(file ${files})
  12. get_filename_component(file_basename ${file} NAME_WE)
  13. string(REGEX REPLACE "unit-([^$]+)" "${TESTCASE_PREFIX}-\\1" testcase ${file_basename})
  14. string(REGEX REPLACE "unit-([^$]+)" "unit-\\1" exe_name ${file_basename})
  15. #message("New File: ${file} Test case: ${testcase} Exe name: ${exe_name}")
  16. set(UNIT_EXE_NAME ${PROJECT_NAME}-${library_MODULE}-${exe_name} )
  17. set(UNIT_TEST_NAME ${TESTCASE_PREFIX}-${exe_name} )
  18. add_executable( ${UNIT_EXE_NAME} ${file} )
  19. #target_compile_features( ${UNIT_EXE_NAME}
  20. # PUBLIC
  21. # "")
  22. target_compile_definitions(${UNIT_EXE_NAME} PRIVATE
  23. CMAKE_SOURCE_DIR="${CMAKE_SOURCE_DIR}"
  24. CMAKE_CURRENT_LIST_DIR="${CMAKE_CURRENT_SOURCE_DIR}"
  25. CMAKE_CURRENT_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}"
  26. CMAKE_CURRENT_BINARY_DIR="${CMAKE_CURRENT_BINARY_DIR}")
  27. target_link_libraries( ${UNIT_EXE_NAME} PUBLIC
  28. Catch2::Catch2WithMain
  29. ${UNIT_TEST_LINK_TARGETS} )
  30. add_test( NAME ${UNIT_TEST_NAME}
  31. COMMAND ${UNIT_EXE_NAME}
  32. )
  33. list(APPEND unitTestsList ${UNIT_EXE_NAME})
  34. #message("${UNIT_EXE_NAME} ")
  35. endforeach()