cmake_minimum_required(VERSION 3.20) project(Aissia VERSION 0.1.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Export compile commands for IDE support set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # ============================================================================ # GroveEngine Integration # ============================================================================ set(GROVE_BUILD_TESTS OFF CACHE BOOL "Disable GroveEngine tests" FORCE) add_subdirectory(external/GroveEngine) # ============================================================================ # Main Executable # ============================================================================ add_executable(aissia src/main.cpp ) target_link_libraries(aissia PRIVATE GroveEngine::impl spdlog::spdlog ) target_include_directories(aissia PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src ) # ============================================================================ # Hot-Reloadable Modules (.so) # ============================================================================ # SchedulerModule - Gestion du temps et détection hyperfocus add_library(SchedulerModule SHARED src/modules/SchedulerModule.cpp ) target_link_libraries(SchedulerModule PRIVATE GroveEngine::impl spdlog::spdlog ) set_target_properties(SchedulerModule PROPERTIES PREFIX "lib" LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/modules ) # NotificationModule - Alertes système et TTS add_library(NotificationModule SHARED src/modules/NotificationModule.cpp ) target_link_libraries(NotificationModule PRIVATE GroveEngine::impl spdlog::spdlog ) set_target_properties(NotificationModule PROPERTIES PREFIX "lib" LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/modules ) # Futurs modules (décommenter quand implémentés): # add_library(AIAssistantModule SHARED src/modules/AIAssistantModule.cpp) # add_library(LanguageLearningModule SHARED src/modules/LanguageLearningModule.cpp) # add_library(DataModule SHARED src/modules/DataModule.cpp) # ============================================================================ # Copy config files to build directory # ============================================================================ file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/config/ DESTINATION ${CMAKE_BINARY_DIR}/config) # ============================================================================ # Development targets # ============================================================================ # Quick rebuild of modules only (for hot-reload workflow) add_custom_target(modules DEPENDS SchedulerModule NotificationModule COMMENT "Building hot-reloadable modules only" ) # Run Aissia add_custom_target(run COMMAND $ DEPENDS aissia modules WORKING_DIRECTORY ${CMAKE_BINARY_DIR} COMMENT "Running Aissia" )