- Normalize CRLF to LF across all source files - Replace CLAUDE.md.old with updated CLAUDE.md - Standardize configuration file formatting - Update module source files with consistent line endings 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
90 lines
2.9 KiB
CMake
90 lines
2.9 KiB
CMake
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 $<TARGET_FILE:aissia>
|
|
DEPENDS aissia modules
|
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
COMMENT "Running Aissia"
|
|
)
|