CMakeLists.txt 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  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. ################################
  41. # Source Files: Interface Module
  42. ################################
  43. set(ATLANTIS_INTERFACE_SOURCES
  44. ${CMAKE_CURRENT_SOURCE_DIR}/source/interface/AStatusCode.cpp
  45. ${CMAKE_CURRENT_SOURCE_DIR}/source/interface/ISdlApi.cpp
  46. ${CMAKE_CURRENT_SOURCE_DIR}/source/interface/IWindowApi.cpp
  47. )
  48. ################################
  49. # Library Creation: Interface Module
  50. ################################
  51. add_library(${MODULE_NAME_INTERFACE} SHARED ${ATLANTIS_INTERFACE_SOURCES})
  52. target_link_libraries(${MODULE_NAME_INTERFACE} PUBLIC
  53. SDL3::SDL3
  54. $<$<CONFIG:Debug>:ls-std::ls-std-core-d>
  55. $<$<CONFIG:Release>:ls-std::ls-std-core>
  56. )
  57. ################################
  58. # Test Files: Interface Module
  59. ################################
  60. set(ATLANTIS_INTERFACE_TEST_SOURCES
  61. ${CMAKE_CURRENT_SOURCE_DIR}/test/interface/mock/StatusCodeMock.cpp
  62. ${CMAKE_CURRENT_SOURCE_DIR}/test/interface/AStatusCodeTest.cpp
  63. )
  64. ################################
  65. # Test Case Creation: Interface Module
  66. ################################
  67. add_executable(${MODULE_NAME_INTERFACE}-tests ${ATLANTIS_INTERFACE_TEST_SOURCES})
  68. target_link_libraries(${MODULE_NAME_INTERFACE}-tests PRIVATE
  69. ${MODULE_NAME_INTERFACE}
  70. GTest::gtest_main
  71. )
  72. gtest_discover_tests(${MODULE_NAME_INTERFACE}-tests DISCOVERY_MODE PRE_TEST)
  73. if (WIN32)
  74. add_custom_command(TARGET ${MODULE_NAME_INTERFACE}-tests POST_BUILD
  75. COMMAND ${CMAKE_COMMAND} -E copy -t $<TARGET_FILE_DIR:${MODULE_NAME_INTERFACE}-tests>
  76. $<TARGET_RUNTIME_DLLS:${MODULE_NAME_INTERFACE}-tests>
  77. COMMAND ${CMAKE_COMMAND} -E copy -t $<TARGET_FILE_DIR:${MODULE_NAME_INTERFACE}-tests>
  78. "$<$<CONFIG:Debug>:${LS_STD_DLLS_DEBUG}>"
  79. "$<$<CONFIG:Release>:${LS_STD_DLLS_RELEASE}>"
  80. COMMAND_EXPAND_LISTS
  81. )
  82. endif ()
  83. ################################################################
  84. ################################################################
  85. # Module: Window
  86. ################################################################
  87. ################################################################
  88. ################################
  89. # Source Files: Window Module
  90. ################################
  91. set(ATLANTIS_WINDOW_SOURCES
  92. ${CMAKE_CURRENT_SOURCE_DIR}/source/window/SdlApi.cpp
  93. ${CMAKE_CURRENT_SOURCE_DIR}/source/window/SdlWindowApi.cpp
  94. )
  95. ################################
  96. # Library Creation: Window Module
  97. ################################
  98. add_library(${MODULE_NAME_WINDOW} SHARED ${ATLANTIS_WINDOW_SOURCES})
  99. target_link_libraries(${MODULE_NAME_WINDOW} PUBLIC
  100. ${MODULE_NAME_CORE}
  101. ${MODULE_NAME_INTERFACE}
  102. SDL3::SDL3
  103. )
  104. ################################
  105. # Test Files: Window Module
  106. ################################
  107. set(ATLANTIS_WINDOW_TEST_SOURCES
  108. ${CMAKE_CURRENT_SOURCE_DIR}/test/window/mock/SdlApiMock.cpp
  109. ${CMAKE_CURRENT_SOURCE_DIR}/test/window/SdlWindowApiTest.cpp
  110. )
  111. ################################
  112. # Test Case Creation: Window Module
  113. ################################
  114. add_executable(${MODULE_NAME_WINDOW}-tests ${ATLANTIS_WINDOW_TEST_SOURCES})
  115. target_link_libraries(${MODULE_NAME_WINDOW}-tests PRIVATE
  116. ${MODULE_NAME_WINDOW}
  117. GTest::gmock_main
  118. )
  119. gtest_discover_tests(${MODULE_NAME_WINDOW}-tests DISCOVERY_MODE PRE_TEST)
  120. if (WIN32)
  121. add_custom_command(TARGET ${MODULE_NAME_WINDOW}-tests POST_BUILD
  122. COMMAND ${CMAKE_COMMAND} -E copy -t $<TARGET_FILE_DIR:${MODULE_NAME_WINDOW}-tests>
  123. $<TARGET_RUNTIME_DLLS:${MODULE_NAME_WINDOW}-tests>
  124. COMMAND ${CMAKE_COMMAND} -E copy -t $<TARGET_FILE_DIR:${MODULE_NAME_WINDOW}-tests>
  125. "$<$<CONFIG:Debug>:${LS_STD_DLLS_DEBUG}>"
  126. "$<$<CONFIG:Release>:${LS_STD_DLLS_RELEASE}>"
  127. COMMAND_EXPAND_LISTS
  128. )
  129. endif ()
  130. ################################################################
  131. ################################################################
  132. # All Tests
  133. ################################################################
  134. ################################################################
  135. add_custom_target(ls-atlantis-tests
  136. DEPENDS
  137. ${MODULE_NAME_CORE}-tests
  138. ${MODULE_NAME_INTERFACE}-tests
  139. ${MODULE_NAME_WINDOW}-tests
  140. )