CMakeLists.txt 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. cmake_minimum_required(VERSION 3.28)
  2. project(ls-atlantis-engine VERSION 0.0.1 LANGUAGES CXX)
  3. ################################
  4. # Compiler Settings
  5. ################################
  6. set(CMAKE_CXX_STANDARD 17)
  7. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  8. set(CMAKE_CXX_EXTENSIONS OFF)
  9. ################################
  10. # Global Project Settings
  11. ################################
  12. set(MODULE_NAME_CORE ls-atlantis-core)
  13. set(MODULE_NAME_INTERFACE ls-atlantis-interface)
  14. set(MODULE_NAME_WINDOW ls-atlantis-window)
  15. set(CMAKE_DEBUG_POSTFIX -d)
  16. include_directories(${CMAKE_CURRENT_LIST_DIR}/include)
  17. include_directories(${CMAKE_CURRENT_LIST_DIR}/)
  18. ################################
  19. # Dependencies
  20. ################################
  21. find_package(GTest REQUIRED)
  22. find_package(ls-std REQUIRED)
  23. find_package(SDL3 REQUIRED)
  24. if (WIN32)
  25. file(GLOB LS_STD_DLLS_DEBUG "${ls-std_LIB_DIRS_DEBUG}/*.dll")
  26. file(GLOB LS_STD_DLLS_RELEASE "${ls-std_LIB_DIRS_RELEASE}/*.dll")
  27. endif ()
  28. ################################################################
  29. ################################################################
  30. # Module: Core
  31. ################################################################
  32. ################################################################
  33. include(cmake/ls-atlantis-core.cmake)
  34. include(cmake/ls-atlantis-core-tests.cmake)
  35. ################################################################
  36. ################################################################
  37. # Module: Interface
  38. ################################################################
  39. ################################################################
  40. include(cmake/ls-atlantis-interface.cmake)
  41. include(cmake/ls-atlantis-interface-tests.cmake)
  42. ################################################################
  43. ################################################################
  44. # Module: Window
  45. ################################################################
  46. ################################################################
  47. ################################
  48. # Source Files: Window Module
  49. ################################
  50. set(ATLANTIS_WINDOW_SOURCES
  51. ${CMAKE_CURRENT_SOURCE_DIR}/source/window/SdlApi.cpp
  52. ${CMAKE_CURRENT_SOURCE_DIR}/source/window/SdlWindowApi.cpp
  53. )
  54. ################################
  55. # Library Creation: Window Module
  56. ################################
  57. add_library(${MODULE_NAME_WINDOW} SHARED ${ATLANTIS_WINDOW_SOURCES})
  58. target_link_libraries(${MODULE_NAME_WINDOW} PUBLIC
  59. ${MODULE_NAME_CORE}
  60. ${MODULE_NAME_INTERFACE}
  61. SDL3::SDL3
  62. )
  63. ################################
  64. # Test Files: Window Module
  65. ################################
  66. set(ATLANTIS_WINDOW_TEST_SOURCES
  67. ${CMAKE_CURRENT_SOURCE_DIR}/test/window/mock/SdlApiMock.cpp
  68. ${CMAKE_CURRENT_SOURCE_DIR}/test/window/SdlWindowApiTest.cpp
  69. )
  70. ################################
  71. # Test Case Creation: Window Module
  72. ################################
  73. add_executable(${MODULE_NAME_WINDOW}-tests ${ATLANTIS_WINDOW_TEST_SOURCES})
  74. target_link_libraries(${MODULE_NAME_WINDOW}-tests PRIVATE
  75. ${MODULE_NAME_WINDOW}
  76. GTest::gmock_main
  77. )
  78. gtest_discover_tests(${MODULE_NAME_WINDOW}-tests DISCOVERY_MODE PRE_TEST)
  79. if (WIN32)
  80. add_custom_command(TARGET ${MODULE_NAME_WINDOW}-tests POST_BUILD
  81. COMMAND ${CMAKE_COMMAND} -E copy -t $<TARGET_FILE_DIR:${MODULE_NAME_WINDOW}-tests>
  82. $<TARGET_RUNTIME_DLLS:${MODULE_NAME_WINDOW}-tests>
  83. COMMAND ${CMAKE_COMMAND} -E copy -t $<TARGET_FILE_DIR:${MODULE_NAME_WINDOW}-tests>
  84. "$<$<CONFIG:Debug>:${LS_STD_DLLS_DEBUG}>"
  85. "$<$<CONFIG:Release>:${LS_STD_DLLS_RELEASE}>"
  86. COMMAND_EXPAND_LISTS
  87. )
  88. endif ()
  89. ################################################################
  90. ################################################################
  91. # All Tests
  92. ################################################################
  93. ################################################################
  94. add_custom_target(ls-atlantis-tests
  95. DEPENDS
  96. ${MODULE_NAME_CORE}-tests
  97. ${MODULE_NAME_INTERFACE}-tests
  98. ${MODULE_NAME_WINDOW}-tests
  99. )