| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- 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
- ################################################################
- ################################################################
- ################################
- # Source Files: Core Module
- ################################
- set(ATLANTIS_CORE_SOURCES
- ${CMAKE_CURRENT_SOURCE_DIR}/source/core/StatusCodeOk.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/source/core/StatusCodeWindowApiLoadingFailed.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/source/core/StatusCodeWindowCreationFailed.cpp
- )
- ################################
- # Library Creation: Core Module
- ################################
- add_library(${MODULE_NAME_CORE} SHARED ${ATLANTIS_CORE_SOURCES})
- target_link_libraries(${MODULE_NAME_CORE} PUBLIC
- ${MODULE_NAME_INTERFACE}
- $<$<CONFIG:Debug>:ls-std::ls-std-core-d>
- $<$<CONFIG:Release>:ls-std::ls-std-core>
- )
- ################################
- # Test Files: Core Module
- ################################
- set(ATLANTIS_CORE_TEST_SOURCES
- ${CMAKE_CURRENT_SOURCE_DIR}/test/core/StatusCodeOkTest.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/test/core/StatusCodeWindowApiLoadingFailedTest.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/test/core/StatusCodeWindowCreationFailedTest.cpp
- )
- ################################
- # Test Case Creation: Core Module
- ################################
- enable_testing()
- add_executable(${MODULE_NAME_CORE}-tests ${ATLANTIS_CORE_TEST_SOURCES})
- target_link_libraries(${MODULE_NAME_CORE}-tests PRIVATE
- ${MODULE_NAME_CORE}
- GTest::gtest_main
- )
- include(GoogleTest)
- gtest_discover_tests(${MODULE_NAME_CORE}-tests DISCOVERY_MODE PRE_TEST)
- if (WIN32)
- add_custom_command(TARGET ${MODULE_NAME_CORE}-tests POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy -t $<TARGET_FILE_DIR:${MODULE_NAME_CORE}-tests>
- $<TARGET_RUNTIME_DLLS:${MODULE_NAME_CORE}-tests>
- COMMAND ${CMAKE_COMMAND} -E copy -t $<TARGET_FILE_DIR:${MODULE_NAME_CORE}-tests>
- "$<$<CONFIG:Debug>:${LS_STD_DLLS_DEBUG}>"
- "$<$<CONFIG:Release>:${LS_STD_DLLS_RELEASE}>"
- COMMAND_EXPAND_LISTS
- )
- endif ()
- ################################################################
- ################################################################
- # Module: Interface
- ################################################################
- ################################################################
- ################################
- # Source Files: Interface Module
- ################################
- set(ATLANTIS_INTERFACE_SOURCES
- ${CMAKE_CURRENT_SOURCE_DIR}/source/interface/AStatusCode.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/source/interface/ISdlApi.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/source/interface/IWindowApi.cpp
- )
- ################################
- # Library Creation: Interface Module
- ################################
- add_library(${MODULE_NAME_INTERFACE} SHARED ${ATLANTIS_INTERFACE_SOURCES})
- target_link_libraries(${MODULE_NAME_INTERFACE} PUBLIC
- SDL3::SDL3
- $<$<CONFIG:Debug>:ls-std::ls-std-core-d>
- $<$<CONFIG:Release>:ls-std::ls-std-core>
- )
- ################################
- # Test Files: Interface Module
- ################################
- set(ATLANTIS_INTERFACE_TEST_SOURCES
- ${CMAKE_CURRENT_SOURCE_DIR}/test/interface/mock/StatusCodeMock.cpp
- ${CMAKE_CURRENT_SOURCE_DIR}/test/interface/AStatusCodeTest.cpp
- )
- ################################
- # Test Case Creation: Interface Module
- ################################
- add_executable(${MODULE_NAME_INTERFACE}-tests ${ATLANTIS_INTERFACE_TEST_SOURCES})
- target_link_libraries(${MODULE_NAME_INTERFACE}-tests PRIVATE
- ${MODULE_NAME_INTERFACE}
- GTest::gtest_main
- )
- gtest_discover_tests(${MODULE_NAME_INTERFACE}-tests DISCOVERY_MODE PRE_TEST)
- if (WIN32)
- add_custom_command(TARGET ${MODULE_NAME_INTERFACE}-tests POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy -t $<TARGET_FILE_DIR:${MODULE_NAME_INTERFACE}-tests>
- $<TARGET_RUNTIME_DLLS:${MODULE_NAME_INTERFACE}-tests>
- COMMAND ${CMAKE_COMMAND} -E copy -t $<TARGET_FILE_DIR:${MODULE_NAME_INTERFACE}-tests>
- "$<$<CONFIG:Debug>:${LS_STD_DLLS_DEBUG}>"
- "$<$<CONFIG:Release>:${LS_STD_DLLS_RELEASE}>"
- COMMAND_EXPAND_LISTS
- )
- endif ()
- ################################################################
- ################################################################
- # 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 $<TARGET_FILE_DIR:${MODULE_NAME_WINDOW}-tests>
- $<TARGET_RUNTIME_DLLS:${MODULE_NAME_WINDOW}-tests>
- COMMAND ${CMAKE_COMMAND} -E copy -t $<TARGET_FILE_DIR:${MODULE_NAME_WINDOW}-tests>
- "$<$<CONFIG:Debug>:${LS_STD_DLLS_DEBUG}>"
- "$<$<CONFIG:Release>:${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
- )
|