cmake_minimum_required(VERSION 3.15...4.0) project(app) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # === CCACHE АВТОМАТИЧЕСКИЙ ЗАПУСК === find_program(CCACHE_PROGRAM ccache) if(CCACHE_PROGRAM) message(STATUS "ccache найден: ${CCACHE_PROGRAM}") # Это работает и с Ninja, и с Makefiles set(CMAKE_C_COMPILER_LAUNCHER "${CCACHE_PROGRAM}") set(CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_PROGRAM}") # Для старых версий CMake (< 3.4) можно использовать альтернативу: # set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM}") endif() set(OUTPUT_DIR ${CMAKE_BINARY_DIR}/$) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUT_DIR}) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUT_DIR}) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_DIR}) file(GLOB_RECURSE LIB_SOURCES "${PROJECT_SOURCE_DIR}/src/saura/main/main.cpp" "${PROJECT_SOURCE_DIR}/src/saura/**/*.cpp" ) # Создаем библиотеку add_library(${PROJECT_NAME}_lib STATIC ${LIB_SOURCES}) # Пути set(SRC_RES_DIR "${CMAKE_SOURCE_DIR}/res") set(RES_SYMLINK "${OUTPUT_DIR}/res") find_package(SDL3 CONFIG REQUIRED) find_package(spdlog CONFIG REQUIRED) find_package(imgui CONFIG REQUIRED) find_package(glm CONFIG REQUIRED) find_package(cpr CONFIG REQUIRED) # Добавляем include-пути target_include_directories(${PROJECT_NAME}_lib PUBLIC ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/src ) target_include_directories(${PROJECT_NAME}_lib PRIVATE ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/src ) target_link_libraries(${PROJECT_NAME}_lib PUBLIC SDL3::SDL3 spdlog::spdlog imgui::imgui glm::glm cpr::cpr ) file(GLOB CMD_PROJECTS "src/saura/cmd/*") foreach(cmd_path ${CMD_PROJECTS}) if(IS_DIRECTORY ${cmd_path} AND EXISTS ${cmd_path}/CMakeLists.txt) add_subdirectory(${cmd_path}) endif() endforeach()