CMakeLists.txt 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. cmake_minimum_required(VERSION 3.25)
  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/VulkanUtils.cpp"
  9. "src/VulkanWrapper.cpp"
  10. "src/WindowManager.cpp"
  11. )
  12. set(SRC_TESTS
  13. "test/Main.cpp"
  14. "test/modules/ImageTests.cpp"
  15. "test/modules/NetworkTests.cpp"
  16. "test/modules/WindowManagerTests.cpp"
  17. )
  18. if("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
  19. set(COMPILE_OPTIONS "")
  20. set(LINK_OPTIONS "")
  21. set(LOG_LEVEL 2)
  22. set(DEFINITIONS CHECK_MEMORY)
  23. else()
  24. set(DEFINITIONS ERROR_SIMULATOR CHECK_MEMORY DEBUG_VULKAN)
  25. if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
  26. set(COMPILE_OPTIONS --coverage)
  27. set(LINK_OPTIONS gcov)
  28. elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
  29. set(COMPILE_OPTIONS -fprofile-instr-generate -fcoverage-mapping)
  30. set(LINK_OPTIONS ${COMPILE_OPTIONS})
  31. endif()
  32. set(LOG_LEVEL 4)
  33. list(APPEND SRC "src/ErrorSimulator.cpp")
  34. endif()
  35. if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
  36. include("cmake/gcc_warnings.cmake")
  37. elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
  38. include("cmake/clang_warnings.cmake")
  39. endif()
  40. add_library(gamingcore STATIC ${SRC})
  41. target_compile_options(gamingcore PUBLIC
  42. ${COMPILE_OPTIONS}
  43. ${WARNINGS}
  44. -fdiagnostics-color=always
  45. )
  46. target_compile_definitions(gamingcore
  47. PUBLIC LOG_LEVEL=${LOG_LEVEL}
  48. PUBLIC ${DEFINITIONS}
  49. )
  50. target_link_libraries(gamingcore
  51. PRIVATE core glfw vulkan ${LINK_OPTIONS}
  52. )
  53. target_include_directories(gamingcore SYSTEM
  54. PUBLIC ${CMAKE_INSTALL_PREFIX}/include
  55. PUBLIC enet/include
  56. PUBLIC stb
  57. PUBLIC glfw/include
  58. )
  59. target_link_directories(gamingcore
  60. PUBLIC ${CMAKE_INSTALL_PREFIX}/lib
  61. )
  62. target_sources(gamingcore PUBLIC
  63. FILE_SET HEADERS
  64. BASE_DIRS include
  65. FILES
  66. ./include/core/Image.hpp
  67. ./include/core/Network.hpp
  68. ./include/core/VulkanWrapper.hpp
  69. ./include/core/WindowManager.hpp
  70. )
  71. install(TARGETS gamingcore FILE_SET HEADERS)
  72. include("cmake/add_shader.cmake")
  73. add_shader(NAME vertex SOURCES shaders/vertex.vert.glsl)
  74. add_shader(NAME fragment SOURCES shaders/fragment.frag.glsl)
  75. add_executable(test ${SRC_TESTS})
  76. target_link_libraries(test PRIVATE gamingcore)