0f83e3d266
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.
63 lines
2.0 KiB
CMake
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
|
|
)
|