CMakeLists.txt 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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/VulkanBase.cpp"
  9. "src/VulkanUtils.cpp"
  10. "src/VulkanUtility.cpp"
  11. "src/VulkanWrapper.cpp"
  12. "src/WindowManager.cpp"
  13. )
  14. set(SRC_TESTS
  15. "test/Main.cpp"
  16. "test/modules/ImageTests.cpp"
  17. "test/modules/NetworkTests.cpp"
  18. "test/modules/WindowManagerTests.cpp"
  19. )
  20. if("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
  21. set(COMPILE_OPTIONS "")
  22. set(LINK_OPTIONS "")
  23. set(LOG_LEVEL 2)
  24. set(DEFINITIONS CHECK_MEMORY)
  25. else()
  26. set(DEFINITIONS ERROR_SIMULATOR CHECK_MEMORY DEBUG_VULKAN)
  27. if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
  28. set(COMPILE_OPTIONS --coverage)
  29. set(LINK_OPTIONS gcov)
  30. elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
  31. set(COMPILE_OPTIONS -fprofile-instr-generate -fcoverage-mapping)
  32. set(LINK_OPTIONS ${COMPILE_OPTIONS})
  33. endif()
  34. set(LOG_LEVEL 4)
  35. list(APPEND SRC "src/ErrorSimulator.cpp")
  36. endif()
  37. if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
  38. include("cmake/gcc_warnings.cmake")
  39. elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
  40. include("cmake/clang_warnings.cmake")
  41. endif()
  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 ${CMAKE_INSTALL_PREFIX}/include
  57. PUBLIC enet/include
  58. PUBLIC stb
  59. PUBLIC glfw/include
  60. )
  61. target_link_directories(gamingcore
  62. PUBLIC ${CMAKE_INSTALL_PREFIX}/lib
  63. )
  64. target_sources(gamingcore PUBLIC
  65. FILE_SET HEADERS
  66. BASE_DIRS include
  67. FILES
  68. ./include/core/Image.hpp
  69. ./include/core/Network.hpp
  70. ./include/core/VulkanBase.hpp
  71. ./include/core/VulkanWrapper.hpp
  72. ./include/core/WindowManager.hpp
  73. )
  74. install(TARGETS gamingcore FILE_SET HEADERS)
  75. include("cmake/add_shader.cmake")
  76. add_shader(NAME vertex SOURCES shaders/vertex.vert.glsl)
  77. add_shader(NAME fragment SOURCES shaders/fragment.frag.glsl)
  78. add_executable(test ${SRC_TESTS})
  79. target_link_libraries(test PRIVATE gamingcore)
  80. target_compile_definitions(test
  81. PRIVATE LOG_LEVEL=4
  82. )