CMakeLists.txt 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. cmake_minimum_required(VERSION 3.15...4.0)
  2. project(app)
  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. # Для старых версий CMake (< 3.4) можно использовать альтернативу:
  14. # set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}")
  15. endif()
  16. set(OUTPUT_DIR ${CMAKE_BINARY_DIR}/$<CONFIG>)
  17. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_DIR})
  18. set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_DIR})
  19. set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_DIR})
  20. file(GLOB_RECURSE LIB_SOURCES
  21. "${PROJECT_SOURCE_DIR}/src/saura/app/*/*.cpp"
  22. "${PROJECT_SOURCE_DIR}/src/saura/core/*/*.cpp"
  23. "${PROJECT_SOURCE_DIR}/src/saura/main/main.cpp"
  24. )
  25. # Создаем библиотеку
  26. add_library(${PROJECT_NAME}_lib STATIC ${LIB_SOURCES})
  27. # Пути
  28. set(SRC_RES_DIR "${CMAKE_SOURCE_DIR}/res")
  29. set(RES_SYMLINK "${OUTPUT_DIR}/res")
  30. find_package(SDL3 CONFIG REQUIRED)
  31. find_package(spdlog CONFIG REQUIRED)
  32. find_package(imgui CONFIG REQUIRED)
  33. find_package(glm CONFIG REQUIRED)
  34. find_package(cpr CONFIG REQUIRED)
  35. find_package(nlohmann_json CONFIG REQUIRED)
  36. find_package(GTest CONFIG REQUIRED)
  37. # Добавляем include-пути
  38. target_include_directories(${PROJECT_NAME}_lib PUBLIC
  39. ${PROJECT_SOURCE_DIR}
  40. ${PROJECT_SOURCE_DIR}/src
  41. )
  42. target_include_directories(${PROJECT_NAME}_lib PRIVATE
  43. ${PROJECT_SOURCE_DIR}
  44. ${PROJECT_SOURCE_DIR}/src
  45. )
  46. target_link_libraries(${PROJECT_NAME}_lib PUBLIC
  47. SDL3::SDL3
  48. spdlog::spdlog
  49. imgui::imgui
  50. glm::glm
  51. cpr::cpr
  52. nlohmann_json::nlohmann_json
  53. GTest::gtest GTest::gtest_main
  54. )
  55. add_subdirectory(src/saura/cmd/sandbox)
  56. add_subdirectory(src/saura/cmd/tests)