cmake_minimum_required(VERSION 3.25) project(gamingcore CXX) add_subdirectory(glfw SYSTEM) set(CMAKE_CXX_STANDARD 23) set(SRC "src/Image.cpp" "src/Network.cpp" "src/VulkanUtils.cpp" "src/VulkanWrapper.cpp" "src/WindowManager.cpp" ) set(SRC_TESTS "test/Main.cpp" "test/modules/ImageTests.cpp" "test/modules/NetworkTests.cpp" "test/modules/WindowManagerTests.cpp" ) if("${CMAKE_BUILD_TYPE}" STREQUAL "Release") set(COMPILE_OPTIONS "") set(LINK_OPTIONS "") set(LOG_LEVEL 2) set(DEFINITIONS CHECK_MEMORY) else() set(DEFINITIONS ERROR_SIMULATOR CHECK_MEMORY DEBUG_VULKAN) if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(COMPILE_OPTIONS --coverage) set(LINK_OPTIONS gcov) elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") set(COMPILE_OPTIONS -fprofile-instr-generate -fcoverage-mapping) set(LINK_OPTIONS ${COMPILE_OPTIONS}) endif() set(LOG_LEVEL 4) list(APPEND SRC "src/ErrorSimulator.cpp") endif() if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") include("cmake/gcc_warnings.cmake") elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") include("cmake/clang_warnings.cmake") endif() add_library(gamingcore STATIC ${SRC}) target_compile_options(gamingcore PUBLIC ${COMPILE_OPTIONS} ${WARNINGS} -fdiagnostics-color=always ) target_compile_definitions(gamingcore PUBLIC LOG_LEVEL=${LOG_LEVEL} PUBLIC ${DEFINITIONS} ) target_link_libraries(gamingcore PRIVATE core glfw vulkan ${LINK_OPTIONS} ) target_include_directories(gamingcore SYSTEM PUBLIC ${CMAKE_INSTALL_PREFIX}/include PUBLIC enet/include PUBLIC stb PUBLIC glfw/include ) target_link_directories(gamingcore PUBLIC ${CMAKE_INSTALL_PREFIX}/lib ) target_sources(gamingcore PUBLIC FILE_SET HEADERS BASE_DIRS include FILES ./include/core/Image.hpp ./include/core/Network.hpp ./include/core/VulkanWrapper.hpp ./include/core/WindowManager.hpp ) install(TARGETS gamingcore FILE_SET HEADERS) include("cmake/add_shader.cmake") add_shader(NAME vertex SOURCES shaders/vertex.vert.glsl) add_shader(NAME fragment SOURCES shaders/fragment.frag.glsl) add_executable(test ${SRC_TESTS}) target_link_libraries(test PRIVATE gamingcore)