CMakeLists.txt 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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. ################################
  18. # Dependencies
  19. ################################
  20. find_package(GTest REQUIRED)
  21. find_package(SDL3 REQUIRED)
  22. ################################################################
  23. ################################################################
  24. # Module: Core
  25. ################################################################
  26. ################################################################
  27. ################################
  28. # Source Files: Core Module
  29. ################################
  30. set(ATLANTIS_CORE_SOURCES
  31. ${CMAKE_CURRENT_SOURCE_DIR}/source/core/StatusCodeOk.cpp
  32. ${CMAKE_CURRENT_SOURCE_DIR}/source/core/StatusCodeWindowApiLoadingFailed.cpp
  33. )
  34. ################################
  35. # Library Creation: Core Module
  36. ################################
  37. add_library(${MODULE_NAME_CORE} SHARED ${ATLANTIS_CORE_SOURCES})
  38. target_link_libraries(${MODULE_NAME_CORE} PUBLIC
  39. ${MODULE_NAME_INTERFACE}
  40. )
  41. ################################
  42. # Test Files: Core Module
  43. ################################
  44. set(ATLANTIS_CORE_TEST_SOURCES
  45. ${CMAKE_CURRENT_SOURCE_DIR}/test/core/StatusCodeOkTest.cpp
  46. ${CMAKE_CURRENT_SOURCE_DIR}/test/core/StatusCodeWindowApiLoadingFailedTest.cpp
  47. )
  48. ################################
  49. # Test Case Creation: Core Module
  50. ################################
  51. enable_testing()
  52. add_executable(${MODULE_NAME_CORE}-tests ${ATLANTIS_CORE_TEST_SOURCES})
  53. target_link_libraries(${MODULE_NAME_CORE}-tests PRIVATE
  54. ${MODULE_NAME_CORE}
  55. GTest::gtest_main
  56. )
  57. include(GoogleTest)
  58. gtest_discover_tests(${MODULE_NAME_CORE}-tests)
  59. ################################################################
  60. ################################################################
  61. # Module: Interface
  62. ################################################################
  63. ################################################################
  64. ################################
  65. # Source Files: Interface Module
  66. ################################
  67. set(ATLANTIS_INTERFACE_SOURCES
  68. ${CMAKE_CURRENT_SOURCE_DIR}/source/interface/AStatusCode.cpp
  69. ${CMAKE_CURRENT_SOURCE_DIR}/source/interface/ISdlApi.cpp
  70. ${CMAKE_CURRENT_SOURCE_DIR}/source/interface/IWindowApi.cpp
  71. )
  72. ################################
  73. # Library Creation: Interface Module
  74. ################################
  75. add_library(${MODULE_NAME_INTERFACE} SHARED ${ATLANTIS_INTERFACE_SOURCES})
  76. target_link_libraries(${MODULE_NAME_INTERFACE} PUBLIC
  77. SDL3::SDL3
  78. )
  79. ################################################################
  80. ################################################################
  81. # Module: Window
  82. ################################################################
  83. ################################################################
  84. ################################
  85. # Source Files: Window Module
  86. ################################
  87. set(ATLANTIS_WINDOW_SOURCES
  88. ${CMAKE_CURRENT_SOURCE_DIR}/source/window/SdlApi.cpp
  89. ${CMAKE_CURRENT_SOURCE_DIR}/source/window/SdlWindowApi.cpp
  90. )
  91. ################################
  92. # Library Creation: Window Module
  93. ################################
  94. add_library(${MODULE_NAME_WINDOW} SHARED ${ATLANTIS_WINDOW_SOURCES})
  95. target_link_libraries(${MODULE_NAME_WINDOW} PUBLIC
  96. ${MODULE_NAME_CORE}
  97. ${MODULE_NAME_INTERFACE}
  98. SDL3::SDL3
  99. )