aissia/CMakeLists.txt
StillHammer 80f26aea54 Add infrastructure foundation and intelligent document retrieval
- CMakeLists.txt: build configuration
- src/: initial infrastructure structure
- config/: application configuration
- external/: third-party dependencies
- docs/GROVEENGINE_GUIDE.md: GroveEngine reference guide
- docs/architecture/intelligent-document-retrieval.md: agentic retrieval for AIAssistantModule

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-24 21:34:16 +08:00

90 lines
2.8 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"
)