cmake_minimum_required(VERSION 3.28) project(ls-atlantis-engine VERSION 0.0.1 LANGUAGES CXX) ################################ # Compiler Settings ################################ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) ################################ # Global Project Settings ################################ set(MODULE_NAME_CORE ls-atlantis-core) set(MODULE_NAME_INTERFACE ls-atlantis-interface) set(MODULE_NAME_WINDOW ls-atlantis-window) set(CMAKE_DEBUG_POSTFIX -d) include_directories(${CMAKE_CURRENT_LIST_DIR}/include) include_directories(${CMAKE_CURRENT_LIST_DIR}/) ################################ # Dependencies ################################ find_package(GTest REQUIRED) find_package(ls-std REQUIRED) find_package(SDL3 REQUIRED) if (WIN32) file(GLOB LS_STD_DLLS_DEBUG "${ls-std_LIB_DIRS_DEBUG}/*.dll") file(GLOB LS_STD_DLLS_RELEASE "${ls-std_LIB_DIRS_RELEASE}/*.dll") endif () ################################################################ ################################################################ # Module: Core ################################################################ ################################################################ include(cmake/ls-atlantis-core.cmake) include(cmake/ls-atlantis-core-tests.cmake) ################################################################ ################################################################ # Module: Interface ################################################################ ################################################################ include(cmake/ls-atlantis-interface.cmake) include(cmake/ls-atlantis-interface-tests.cmake) ################################################################ ################################################################ # Module: Window ################################################################ ################################################################ ################################ # Source Files: Window Module ################################ set(ATLANTIS_WINDOW_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/source/window/SdlApi.cpp ${CMAKE_CURRENT_SOURCE_DIR}/source/window/SdlWindowApi.cpp ) ################################ # Library Creation: Window Module ################################ add_library(${MODULE_NAME_WINDOW} SHARED ${ATLANTIS_WINDOW_SOURCES}) target_link_libraries(${MODULE_NAME_WINDOW} PUBLIC ${MODULE_NAME_CORE} ${MODULE_NAME_INTERFACE} SDL3::SDL3 ) ################################ # Test Files: Window Module ################################ set(ATLANTIS_WINDOW_TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/test/window/mock/SdlApiMock.cpp ${CMAKE_CURRENT_SOURCE_DIR}/test/window/SdlWindowApiTest.cpp ) ################################ # Test Case Creation: Window Module ################################ add_executable(${MODULE_NAME_WINDOW}-tests ${ATLANTIS_WINDOW_TEST_SOURCES}) target_link_libraries(${MODULE_NAME_WINDOW}-tests PRIVATE ${MODULE_NAME_WINDOW} GTest::gmock_main ) gtest_discover_tests(${MODULE_NAME_WINDOW}-tests DISCOVERY_MODE PRE_TEST) if (WIN32) add_custom_command(TARGET ${MODULE_NAME_WINDOW}-tests POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy -t $ $ COMMAND ${CMAKE_COMMAND} -E copy -t $ "$<$:${LS_STD_DLLS_DEBUG}>" "$<$:${LS_STD_DLLS_RELEASE}>" COMMAND_EXPAND_LISTS ) endif () ################################################################ ################################################################ # All Tests ################################################################ ################################################################ add_custom_target(ls-atlantis-tests DEPENDS ${MODULE_NAME_CORE}-tests ${MODULE_NAME_INTERFACE}-tests ${MODULE_NAME_WINDOW}-tests )