| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- 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}/$<CONFIG>)
- 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()
|