| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- cmake_minimum_required(VERSION 3.28)
- project(gamingcore CXX)
- add_subdirectory(glfw SYSTEM)
- set(CMAKE_CXX_STANDARD 23)
- set(SRC
- "src/Image.cpp"
- "src/Network.cpp"
- "src/VulkanBase.cpp"
- "src/VulkanUtility.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
- PRIVATE LOG_LEVEL=${LOG_LEVEL}
- PUBLIC ${DEFINITIONS}
- )
- target_link_libraries(gamingcore
- PRIVATE core glfw vulkan ${LINK_OPTIONS}
- )
- target_include_directories(gamingcore SYSTEM
- PUBLIC enet/include
- PUBLIC stb
- PUBLIC glfw/include
- )
- target_sources(gamingcore PUBLIC
- FILE_SET CXX_MODULES
- BASE_DIRS ${CMAKE_INSTALL_PREFIX}/modules
- FILES
- "${CMAKE_INSTALL_PREFIX}/modules/Array.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/AlignedData.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/ArrayList.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/BitArray.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Box.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Buffer.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Clock.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Color.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Components.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/File.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Frustum.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/HashMap.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/HashedString.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/List.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Logger.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Math.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Matrix.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Meta.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Plane.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Quaternion.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Queue.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Random.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/ReadLine.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Terminal.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Test.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Thread.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/ToString.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Types.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Unicode.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/UniquePointer.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Utility.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/Vector.cppm"
- "${CMAKE_INSTALL_PREFIX}/modules/View.cppm"
- )
- 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/VulkanBase.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)
- target_compile_definitions(test
- PRIVATE LOG_LEVEL=4
- )
|