68 lines
2.1 KiB
CMake
68 lines
2.1 KiB
CMake
cmake_minimum_required(VERSION 3.14)
|
|
|
|
set(SRCROOT "${PROJECT_SOURCE_DIR}/test/src")
|
|
|
|
include(FetchContent)
|
|
FetchContent_Declare(Catch2
|
|
GIT_REPOSITORY "https://github.com/catchorg/Catch2.git"
|
|
GIT_TAG v2.13.7)
|
|
FetchContent_MakeAvailable(Catch2)
|
|
|
|
add_library(sfml-test-main STATIC "${SRCROOT}/CatchMain.cpp")
|
|
target_include_directories(sfml-test-main PUBLIC "${SRCROOT}/TestUtilities")
|
|
target_link_libraries(sfml-test-main PUBLIC Catch2::Catch2)
|
|
target_compile_features(sfml-test-main PRIVATE cxx_std_17)
|
|
|
|
# Work around MinGW struggling to process a file as large as catch.hpp
|
|
if(MINGW)
|
|
target_compile_options(sfml-test-main PUBLIC -Wa,-mbig-obj)
|
|
endif()
|
|
|
|
# System is always built
|
|
SET(SYSTEM_SRC
|
|
"${SRCROOT}/System/Vector2.cpp"
|
|
"${SRCROOT}/System/Vector3.cpp"
|
|
"${SRCROOT}/TestUtilities/SystemUtil.hpp"
|
|
"${SRCROOT}/TestUtilities/SystemUtil.cpp"
|
|
)
|
|
|
|
sfml_add_test(test-sfml-system "${SYSTEM_SRC}" sfml-system)
|
|
target_link_libraries(test-sfml-system PRIVATE sfml-test-main)
|
|
|
|
if(SFML_BUILD_WINDOW)
|
|
SET(WINDOW_SRC
|
|
"${SRCROOT}/TestUtilities/WindowUtil.hpp"
|
|
"${SRCROOT}/TestUtilities/WindowUtil.cpp"
|
|
)
|
|
sfml_add_test(test-sfml-window "${WINDOW_SRC}" sfml-window)
|
|
target_link_libraries(test-sfml-window PRIVATE sfml-test-main)
|
|
endif()
|
|
|
|
if(SFML_BUILD_GRAPHICS)
|
|
SET(GRAPHICS_SRC
|
|
"${SRCROOT}/Graphics/Rect.cpp"
|
|
"${SRCROOT}/TestUtilities/GraphicsUtil.hpp"
|
|
"${SRCROOT}/TestUtilities/GraphicsUtil.cpp"
|
|
)
|
|
sfml_add_test(test-sfml-graphics "${GRAPHICS_SRC}" sfml-graphics)
|
|
target_link_libraries(test-sfml-graphics PRIVATE sfml-test-main)
|
|
endif()
|
|
|
|
if(SFML_BUILD_NETWORK)
|
|
SET(NETWORK_SRC
|
|
"${SRCROOT}/Network/Packet.cpp"
|
|
)
|
|
sfml_add_test(test-sfml-network "${NETWORK_SRC}" sfml-network)
|
|
target_link_libraries(test-sfml-network PRIVATE sfml-test-main)
|
|
endif()
|
|
|
|
# Automatically run the tests at the end of the build
|
|
add_custom_target(runtests ALL
|
|
DEPENDS test-sfml-system test-sfml-window test-sfml-graphics test-sfml-network
|
|
)
|
|
|
|
add_custom_command(TARGET runtests
|
|
COMMENT "Run tests"
|
|
POST_BUILD COMMAND ctest ARGS --output-on-failure
|
|
)
|