CMakeLists.txt 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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/main/main.cpp"
  22. "${PROJECT_SOURCE_DIR}/src/saura/**/*.cpp"
  23. )
  24. # Создаем библиотеку
  25. add_library(${PROJECT_NAME}_lib STATIC ${LIB_SOURCES})
  26. # Пути
  27. set(SRC_RES_DIR "${CMAKE_SOURCE_DIR}/res")
  28. set(RES_SYMLINK "${OUTPUT_DIR}/res")
  29. find_package(SDL3 CONFIG REQUIRED)
  30. find_package(spdlog CONFIG REQUIRED)
  31. find_package(imgui CONFIG REQUIRED)
  32. find_package(glm CONFIG REQUIRED)
  33. find_package(cpr CONFIG REQUIRED)
  34. # Добавляем include-пути
  35. target_include_directories(${PROJECT_NAME}_lib PUBLIC
  36. ${PROJECT_SOURCE_DIR}
  37. ${PROJECT_SOURCE_DIR}/src
  38. )
  39. target_include_directories(${PROJECT_NAME}_lib PRIVATE
  40. ${PROJECT_SOURCE_DIR}
  41. ${PROJECT_SOURCE_DIR}/src
  42. )
  43. target_link_libraries(${PROJECT_NAME}_lib PUBLIC
  44. SDL3::SDL3
  45. spdlog::spdlog
  46. imgui::imgui
  47. glm::glm
  48. cpr::cpr
  49. )
  50. file(GLOB CMD_PROJECTS "src/saura/cmd/*")
  51. foreach(cmd_path ${CMD_PROJECTS})
  52. if(IS_DIRECTORY ${cmd_path} AND EXISTS ${cmd_path}/CMakeLists.txt)
  53. add_subdirectory(${cmd_path})
  54. endif()
  55. endforeach()