CMakeLists.txt 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. cmake_minimum_required(VERSION 3.28)
  2. project(gamingcore CXX)
  3. add_subdirectory(glfw SYSTEM)
  4. set(CMAKE_CXX_STANDARD 23)
  5. set(SRC
  6. "src/Image.cpp"
  7. "src/Network.cpp"
  8. "src/VulkanBase.cpp"
  9. "src/VulkanUtility.cpp"
  10. "src/VulkanWrapper.cpp"
  11. "src/WindowManager.cpp"
  12. )
  13. set(SRC_TESTS
  14. "test/Main.cpp"
  15. "test/modules/ImageTests.cpp"
  16. "test/modules/NetworkTests.cpp"
  17. "test/modules/WindowManagerTests.cpp"
  18. )
  19. if("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
  20. set(COMPILE_OPTIONS "")
  21. set(LINK_OPTIONS "")
  22. set(LOG_LEVEL 2)
  23. set(DEFINITIONS CHECK_MEMORY)
  24. else()
  25. set(DEFINITIONS ERROR_SIMULATOR CHECK_MEMORY DEBUG_VULKAN)
  26. if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
  27. set(COMPILE_OPTIONS --coverage)
  28. set(LINK_OPTIONS gcov)
  29. elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
  30. set(COMPILE_OPTIONS -fprofile-instr-generate -fcoverage-mapping)
  31. set(LINK_OPTIONS ${COMPILE_OPTIONS})
  32. endif()
  33. set(LOG_LEVEL 4)
  34. list(APPEND SRC "src/ErrorSimulator.cpp")
  35. endif()
  36. if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
  37. include("cmake/gcc_warnings.cmake")
  38. elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
  39. include("cmake/clang_warnings.cmake")
  40. endif()
  41. include("${CMAKE_INSTALL_PREFIX}/cmake/add_modules.cmake")
  42. add_library(gamingcore STATIC ${SRC})
  43. target_compile_options(gamingcore PUBLIC
  44. ${COMPILE_OPTIONS}
  45. ${WARNINGS}
  46. -fdiagnostics-color=always
  47. )
  48. target_compile_definitions(gamingcore
  49. PRIVATE LOG_LEVEL=${LOG_LEVEL}
  50. PUBLIC ${DEFINITIONS}
  51. )
  52. target_link_libraries(gamingcore
  53. PRIVATE core glfw vulkan ${LINK_OPTIONS}
  54. )
  55. target_include_directories(gamingcore SYSTEM
  56. PUBLIC enet/include
  57. PUBLIC stb
  58. PUBLIC glfw/include
  59. )
  60. add_modules(
  61. TARGET gamingcore
  62. NAME core_modules
  63. PREFIX ${CMAKE_INSTALL_PREFIX}/
  64. FILES ${core_modules}
  65. )
  66. add_modules(
  67. TARGET gamingcore
  68. NAME gamingcore_modules
  69. FILES
  70. modules/Image.cppm
  71. modules/Network.cppm
  72. modules/Vulkan.cppm
  73. modules/VulkanBase.cppm
  74. modules/VulkanWrapper.cppm
  75. modules/VulkanUtility.cppm
  76. modules/WindowManager.cppm
  77. )
  78. add_modules(
  79. TARGET gamingcore
  80. NAME gamingcore_private_modules
  81. FILES
  82. src/GLFW.cppm
  83. )
  84. target_link_directories(gamingcore
  85. PUBLIC ${CMAKE_INSTALL_PREFIX}/lib
  86. )
  87. include("cmake/add_shader.cmake")
  88. add_shader(NAME vertex SOURCES shaders/vertex.vert.glsl)
  89. add_shader(NAME fragment SOURCES shaders/fragment.frag.glsl)
  90. add_executable(test ${SRC_TESTS})
  91. target_link_libraries(test PRIVATE gamingcore)
  92. target_compile_definitions(test
  93. PRIVATE LOG_LEVEL=4
  94. )