SFML/test/CMakeLists.txt
Chris Thrasher 0f83e3d266 Use FetchContent to grab latest Catch2 release
The key benefit here is that now we're linking against their CMake
target which makes it easy to change how we depend on Catch2. We
can switch from FetchContent to FindPackage to a git submodule and
never have to change our code because we're depending on Catch2 in
the most flexible way possible.
2021-12-21 23:11:15 +01:00

63 lines
2.0 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)
# 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
)