| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- # Create a static library for Catch2s main so that we can reduce
- # compiling time. Each unit test will link to this
- cmake_minimum_required(VERSION 3.13)
- ################################################################################
- # If the conan file exists, include it
- ################################################################################
- if( EXISTS ${PROJECT_BINARY_DIR}/conanbuildinfo.cmake )
- include(${PROJECT_BINARY_DIR}/conanbuildinfo.cmake)
- conan_basic_setup(NO_OUTPUT_DIRS TARGETS)
- else()
- message("")
- message("")
- message("*************WARNING******************************")
- message("Could Not find ${PROJECT_BINARY_DIR}/conanbuildinfo.cmake.")
- message("Cannot build unit tests. ")
- message("Execute the following to build the unit tests")
- message(" cd ${PROJECT_BINARY_DIR}")
- message(" conan install ${PROJECT_SOURCE_DIR}")
- message("**************************************************")
- message("")
- message("")
- return()
- endif()
- ################################################################################
- add_library(${PROJECT_NAME}-catchmain STATIC ${CMAKE_CURRENT_SOURCE_DIR}/catch-main.cpp)
- target_include_directories(${PROJECT_NAME}-catchmain PUBLIC third_party)
- target_compile_features(${PROJECT_NAME}-catchmain PUBLIC cxx_std_17)
- target_link_libraries( ${PROJECT_NAME}-catchmain PUBLIC CONAN_PKG::catch2)
- set_coverage_flags(${PROJECT_NAME}-catchmain)
- get_filename_component(folder_name ${CMAKE_CURRENT_SOURCE_DIR} NAME)
- string(REPLACE " " "_" folder_name ${folder_name})
- enable_testing()
- find_package(Threads REQUIRED)
- file(GLOB files "unit-*.cpp")
- foreach(file ${files})
- # Replace any files named test_XXXXX with XXXX
- get_filename_component(file_basename ${file} NAME_WE)
- string(REGEX REPLACE "unit-([^$]+)" "\\1" testcase ${file_basename})
- set(FILE_SUFFIX_NAME ${testcase} )
- set(EXE_NAME unit-${FILE_SUFFIX_NAME} )
- set(TEST_NAME test-${FILE_SUFFIX_NAME} )
- set(SRC_NAME unit-${FILE_SUFFIX_NAME}.cpp )
- set(exeCmd ${EXE_NAME} )
- set(envVar "" )
- add_executable( ${EXE_NAME} ${SRC_NAME} )
- target_link_libraries( ${EXE_NAME}
- PUBLIC
- ${UNIT_TEST_LINK_TARGETS}
- ${LINKED_TARGETS})
- target_link_libraries( ${EXE_NAME}
- PRIVATE
- -lstdc++fs
- ${PROJECT_NAME}-catchmain
- ${PROJECT_NAME}
- Threads::Threads
- CONAN_PKG::nlohmann_json
- CONAN_PKG::glm
- CONAN_PKG::stb)
- target_compile_definitions(${EXE_NAME}
- PRIVATE
- CMAKE_SOURCE_DIR="${CMAKE_SOURCE_DIR}")
- add_test( NAME ${TEST_NAME}
- COMMAND ${exeCmd}
- )
- set_tests_properties(${TEST_NAME}
- PROPERTIES
- ENVIRONMENT
- "${envVar}")
- message("--------------------------------------------------")
- message("Unit Test Added: ${TEST_NAME}")
- message("--------------------------------------------------")
- message("Souce File : ${SRC_NAME}")
- message("Working Directory: ${CMAKE_CURRENT_BINARY_DIR}")
- message("Env Variables : ${envVar}")
- message("Command : ${exeCmd}")
- #set_coverage_flags(${EXE_NAME})
- #set_project_warnings(${EXE_NAME})
- endforeach()
- return()
|