CMakeLists.txt 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. cmake_minimum_required(VERSION 3.15...4.0)
  2. project(metacraft)
  3. set(CMAKE_CXX_STANDARD 17)
  4. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  5. set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
  6. # === CCACHE АВТОМАТИЧЕСКИЙ ЗАПУСК ===
  7. find_program(CCACHE_PROGRAM ccache)
  8. if(CCACHE_PROGRAM)
  9. message(STATUS "ccache найден: ${CCACHE_PROGRAM}")
  10. # Это работает и с Ninja, и с Makefiles
  11. set(CMAKE_C_COMPILER_LAUNCHER "${CCACHE_PROGRAM}")
  12. set(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_PROGRAM}")
  13. endif()
  14. set(OUTPUT_DIR ${CMAKE_BINARY_DIR}/$<CONFIG>)
  15. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_DIR})
  16. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_DIR})
  17. set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_DIR})
  18. file(GLOB_RECURSE LIB_SOURCES
  19. "${PROJECT_SOURCE_DIR}/src/saura/core/*/*.cpp"
  20. )
  21. # Создаем библиотеку
  22. add_library(${PROJECT_NAME} SHARED ${LIB_SOURCES})
  23. # Пути
  24. set(SRC_RES_DIR "${CMAKE_SOURCE_DIR}/res")
  25. set(RES_SYMLINK "${OUTPUT_DIR}/res")
  26. find_package(SDL3 CONFIG REQUIRED)
  27. find_package(spdlog CONFIG REQUIRED)
  28. find_package(imgui CONFIG REQUIRED)
  29. find_package(glm CONFIG REQUIRED)
  30. find_package(GTest CONFIG REQUIRED)
  31. # Добавляем include-пути
  32. target_include_directories(${PROJECT_NAME} PRIVATE
  33. ${PROJECT_SOURCE_DIR}
  34. ${PROJECT_SOURCE_DIR}/src
  35. )
  36. target_include_directories(${PROJECT_NAME} PRIVATE
  37. ${PROJECT_SOURCE_DIR}
  38. ${PROJECT_SOURCE_DIR}/src
  39. )
  40. target_link_libraries(${PROJECT_NAME} PRIVATE
  41. SDL3::SDL3
  42. spdlog::spdlog
  43. imgui::imgui
  44. glm::glm
  45. GTest::gtest GTest::gtest_main
  46. )