-
Notifications
You must be signed in to change notification settings - Fork 1
IMPLEMENTATION_CHECKLIST
Diese Anleitung behebt die CMake find_package() Fehler für FAISS und gRPC auf Windows (x64).
Status: 🟢 Bereit zur Implementierung
Betroffene CMakeLists.txt Dateien: 2
Geschätzte Implementierungszeit: 10 Minuten
Test-Zeit: 15 Minuten
# Terminal öffnen und ins Projektverzeichnis navigieren
cd C:\VCC\themis
# Diagnose durchführen
.\scripts\fix-cmake-prefix-path.ps1 -Action diagnoseErwartet Output wenn alles falsch ist:
❌ FAISS config NOT found: ...
❌ gRPC config NOT found: ...
⚠️ CMake Cache missing faiss_DIR entry
⚠️ CMake Cache missing gRPC_DIR entry
# FAISS Check
Test-Path "C:\VCC\themis\vcpkg_installed\x64-windows\share\faiss\faiss-config.cmake"
# Erwartet: True
# gRPC Check
Test-Path "C:\VCC\themis\vcpkg_installed\x64-windows\share\grpc\gRPCConfig.cmake"
# Erwartet: True
# Libraries Check
Test-Path "C:\VCC\themis\vcpkg_installed\x64-windows\lib\faiss.lib" # True erwartet
Test-Path "C:\VCC\themis\vcpkg_installed\x64-windows\lib\grpc.lib" # True erwartetDatei: CMakeLists.txt
Zeile zu patchen: 40-50 (nach set(CMAKE_EXPORT_COMPILE_COMMANDS ON))
Vor (Zeile 40-47):
# Export compile commands for IDE support
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# vcpkg integration
if(DEFINED ENV{VCPKG_ROOT})
set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
CACHE STRING "Vcpkg toolchain file")Nach (Zeile 40-60):
# Export compile commands for IDE support
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# ============================================================================
# v1.3.5: Fix CMAKE_PREFIX_PATH for vcpkg packages (faiss, gRPC, etc)
# Explanation: vcpkg.cmake sets PREFIX_PATH but it may be cleared by IDE builds
# SOLUTION: Explicitly prepend vcpkg installed directory to PREFIX_PATH
# GitHub Issues: microsoft/vcpkg#xxxxx, grpc/grpc#38623
# ============================================================================
if(DEFINED ENV{VCPKG_ROOT})
list(PREPEND CMAKE_PREFIX_PATH
"$ENV{VCPKG_ROOT}/installed/x64-windows/share"
"$ENV{VCPKG_ROOT}/installed/x64-windows")
message(STATUS "v1.3.5: CMAKE_PREFIX_PATH set to ${CMAKE_PREFIX_PATH}")
endif()
# vcpkg integration
if(DEFINED ENV{VCPKG_ROOT})
set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
CACHE STRING "Vcpkg toolchain file")Implementation:
- VS Code öffnen: Datei
CMakeLists.txt(Line 1) - Zu Zeile 40 navigieren (Ctrl+G → "40")
- Nach Zeile 46 (nach
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)) neue Zeilen einfügen - Obigen Code einfügen
- Speichern (Ctrl+S)
Vor:
# Optional: Faiss for GPU support (graceful degradation if not found)
if(THEMIS_ENABLE_GPU)
find_package(faiss CONFIG)
if(NOT faiss_FOUND)
message(WARNING "Faiss nicht gefunden – GPU-Unterstützung wird automatisch deaktiviert.")
set(THEMIS_ENABLE_GPU OFF CACHE BOOL "Enable GPU acceleration for vector search" FORCE)
endif()
endif()Nach:
# Optional: Faiss for GPU support (graceful degradation if not found)
if(THEMIS_ENABLE_GPU)
find_package(faiss CONFIG QUIET)
if(NOT faiss_FOUND)
# v1.3.5: Fallback with HINTS if CMAKE_PREFIX_PATH wasn't propagated
find_package(faiss CONFIG
HINTS "${CMAKE_PREFIX_PATH}"
QUIET)
endif()
if(NOT faiss_FOUND)
message(WARNING "Faiss nicht gefunden – GPU-Unterstützung wird automatisch deaktiviert.")
set(THEMIS_ENABLE_GPU OFF CACHE BOOL "Enable GPU acceleration for vector search" FORCE)
else()
message(STATUS "v1.3.5: faiss found at ${faiss_DIR}")
endif()
endif()Implementation:
- Zu Zeile 502 navigieren
- Die if-block mit den Fallback-find_package Calls ersetzen
- Speichern
Vor:
find_package(gRPC CONFIG QUIET)
if(gRPC_FOUND)
message(STATUS "gRPC found - enabling LLM gRPC service")
list(APPEND THEMIS_CORE_SOURCES
src/server/llm_grpc_service.cpp
proto/llm_service.proto
)
# Note: Proto generation should be configured in a separate section when needed
else()
message(STATUS "gRPC not found - disabling LLM gRPC service and proto generation")
endif()Nach:
find_package(gRPC CONFIG QUIET)
if(NOT gRPC_FOUND)
# v1.3.5: Fallback with HINTS if CMAKE_PREFIX_PATH wasn't propagated
find_package(gRPC CONFIG
HINTS "${CMAKE_PREFIX_PATH}"
QUIET)
endif()
if(gRPC_FOUND)
message(STATUS "v1.3.5: gRPC found at ${gRPC_DIR} - enabling LLM gRPC service")
list(APPEND THEMIS_CORE_SOURCES
src/server/llm_grpc_service.cpp
proto/llm_service.proto
)
# Note: Proto generation should be configured in a separate section when needed
else()
message(WARNING "gRPC not found - disabling LLM gRPC service and proto generation")
endif()Implementation:
- Zu Zeile 925 navigieren
- Die find_package Calls ersetzen
- Speichern
Datei: plugins/rpc/grpc/CMakeLists.txt
Zeile: 8-20
Vor:
# Find gRPC package
find_package(gRPC CONFIG)
if(NOT gRPC_FOUND)
find_package(gRPC)
endif()
if(NOT gRPC_FOUND)
message(WARNING "gRPC not found - skipping gRPC plugin build")
message(WARNING "Install with: apt install libgrpc++-dev or brew install grpc or vcpkg install grpc")
return()
endif()Nach:
# v1.3.5 Hotfix: Ensure gRPC_DIR is set from vcpkg
if(NOT DEFINED gRPC_DIR AND DEFINED ENV{VCPKG_ROOT})
set(gRPC_DIR "$ENV{VCPKG_ROOT}/installed/x64-windows/share/grpc" CACHE PATH "gRPC directory")
endif()
# Find gRPC package
find_package(gRPC CONFIG QUIET)
if(NOT gRPC_FOUND)
# Fallback with HINTS
find_package(gRPC CONFIG
HINTS "${CMAKE_PREFIX_PATH}"
QUIET)
endif()
if(NOT gRPC_FOUND)
message(WARNING "gRPC not found - skipping gRPC plugin build")
message(WARNING "To fix: Set gRPC_DIR to <vcpkg>/installed/x64-windows/share/grpc")
message(WARNING "Or install with: apt install libgrpc++-dev | brew install grpc | vcpkg install grpc")
return()
else()
message(STATUS "v1.3.5: gRPC found at ${gRPC_DIR}")
endif()Implementation:
- Datei öffnen: plugins/rpc/grpc/CMakeLists.txt
- Zu Zeile 8 navigieren
- Code ersetzen
- Speichern
cd C:\VCC\themis
# Option 1: Einfach mit Standard-Optionen
.\scripts\fix-cmake-prefix-path.ps1 -Action build
# Option 2: Mit GPU-Support
.\scripts\fix-cmake-prefix-path.ps1 -Action build -EnableGPU $true
# Option 3: Mit GPU + LLM
.\scripts\fix-cmake-prefix-path.ps1 -Action build -EnableGPU $true -EnableLLM $true
# Option 4: Clean (Remove alt build dir) + Build
.\scripts\fix-cmake-prefix-path.ps1 -Action cleancd C:\VCC\themis
$VCPKG = "C:\VCC\themis\vcpkg_installed\x64-windows"
cmake -S . -B build-msvc `
-G "Visual Studio 17 2022" `
-A x64 `
-DCMAKE_TOOLCHAIN_FILE="$PWD\vcpkg\scripts\buildsystems\vcpkg.cmake" `
-DVCPKG_TARGET_TRIPLET=x64-windows `
-DCMAKE_PREFIX_PATH="$VCPKG;$VCPKG\share" `
-Dfaiss_DIR="$VCPKG\share\faiss" `
-DgRPC_DIR="$VCPKG\share\grpc" `
-DTHEMIS_ENABLE_GPU=ON `
-DTHEMIS_ENABLE_LLM=ON `
-DTHEMIS_BUILD_TESTS=ONErfolgreiches Zeichen:
...
-- v1.3.5: CMAKE_PREFIX_PATH set to ...
...
-- Found faiss: ...faiss-config.cmake (found version "1.8.0")
-- v1.3.5: faiss found at ...
...
-- v1.3.5: gRPC found at ... - enabling LLM gRPC service
...
-- Configuring done (10.5s)
-- Generating done (0.5s)
-- Build files have been generated to: C:\VCC\themis\build-msvc
Fehler-Zeichen:
CMake Error: Could NOT find faiss (missing: faiss_DIR)
CMake Error: Could NOT find gRPC (missing: gRPC_DIR)
Falls Fehler: Gehe zu Phase 4 Debugging.
cd C:\VCC\themis
# Option 1: CMAKE
cmake --build build-msvc --config Release --target themis_server --parallel 8
# Option 2: MSBuild direkt
msbuild build-msvc\Themis.sln /p:Configuration=Release /m:8 /t:themis_server# Sollte existieren
Test-Path "C:\VCC\themis\build-msvc\Release\themis_server.exe" # True erwartet
# Optional: Mit GPU auch
Test-Path "C:\VCC\themis\build-msvc\Release\themis_core.lib" # True erwartet# Wenn GPU-Features gebaut wurden, überprüfen ob FAISS geladen wird
C:\VCC\themis\build-msvc\Release\themis_server.exe --help | Select-String -Pattern "faiss|gpu"
# Wenn keine Fehler: ✅ FAISS Integration erfolgreich# Überprüfe dass Pfade im Cache korrekt sind
Select-String -Path "C:\VCC\themis\build-msvc\CMakeCache.txt" `
-Pattern "faiss|gRPC" | Select-Object -First 20
# Sollte enthalten:
# faiss_DIR:PATH=...share\faiss
# gRPC_DIR:PATH=...share\grpc# Script erneut laufen lassen für Bestätigung
.\scripts\fix-cmake-prefix-path.ps1 -Action diagnose
# Sollte ALLE grünen ✅ Checks zeigenUrsache: CMAKE_PREFIX_PATH wurde nicht richtig propagiert
Lösung:
# 1. Überprüfe VCPKG_ROOT
$env:VCPKG_ROOT
# 2. Wenn leer, setzen
$env:VCPKG_ROOT = "C:\VCC\themis\vcpkg"
# 3. Erneut CMake Config mit explizitem faiss_DIR
cmake -S . -B build-msvc `
... `
-Dfaiss_DIR="C:\VCC\themis\vcpkg_installed\x64-windows\share\faiss" `
...Ursache: Protobuf Abhängigkeit nicht gefunden
Lösung:
# vcpkg protobuf neu bauen
cd C:\VCC\themis
.\vcpkg\vcpkg install protobuf:x64-windows
# dann erneut gRPC
.\vcpkg\vcpkg install grpc:x64-windows
# Dann CMake Config neu mit explizitem gRPC_DIR
cmake -S . -B build-msvc `
... `
-DgRPC_DIR="C:\VCC\themis\vcpkg_installed\x64-windows\share\grpc" `
...Ursache: gRPC auf Windows MUSS statisch sein
Überprüfung:
# MUSS für Windows sein:
Select-String -Path "C:\VCC\themis\vcpkg_installed\x64-windows\lib\grpc.lib"
# Sollte statische Library sein, nicht .dll
Test-Path "C:\VCC\themis\vcpkg_installed\x64-windows\lib\grpc.dll" # FALSE erwartet!Fix wenn DLL vorhanden:
# gRPC mit statischen Libraries neu bauen
cd C:\VCC\themis
Remove-Item -Recurse -Force "vcpkg_installed\x64-windows\*" -Force
.\vcpkg\vcpkg install grpc:x64-windows --triplet x64-windowsUrsache: FAISS Config-Datei hat Abhängigkeitsfehler
Debug:
# Lese die config datei
Get-Content "C:\VCC\themis\vcpkg_installed\x64-windows\share\faiss\faiss-config.cmake"
# Sollte mit find_dependency(OpenMP) und find_dependency(BLAS) starten
# Wenn Fehler: Überprüfe OpenMP und BLAS installation
# Neu bauen wenn nötig
.\vcpkg\vcpkg install faiss:x64-windows- Workspace geöffnet in VS Code
- Terminal verfügbar
- Diagnose durchgeführt und Probleme identifiziert
- CMakeLists.txt Line 40-60 gepatchot ✅
- FAISS find_package (Line 502-510) gepatchot ✅
- gRPC find_package (Line 925-940) gepatchot ✅
- gRPC Plugin CMakeLists.txt gepatchot ✅
- Alle Dateien gespeichert (Ctrl+S) ✅
- CMake Configure erfolgreich:
configure donemessage ✅ - Build erfolgreich:
themis_server.exeexistiert ✅ - Keine Linker-Fehler ✅
- Diagnose-Script zeigt alle ✅ Checks ✅
- CMake Cache enthält faiss_DIR und gRPC_DIR ✅
- themis_server.exe lädt FAISS/gRPC ohne Fehler ✅
Falls Probleme nach Implementierung:
-
Logs sammeln:
cmake --build build-msvc --config Release 2>&1 | Tee-Object -FilePath "build_errors.log"
-
Diagnose durchführen:
.\scripts\fix-cmake-prefix-path.ps1 -Action diagnose > diagnostics.txt
-
CMake verbose:
cmake -S . -B build-msvc --debug-output
-
Ref. Dokumente konsultieren:
Version: 1.3.5
Datum: 2025-12-26
Status: 🟢 Ready
Geschätzte Implementierungszeit: 20 Minuten total
ThemisDB v1.3.4 | GitHub | Documentation | Discussions | License
Last synced: January 02, 2026 | Commit: 6add659
Version: 1.3.0 | Stand: Dezember 2025
- Übersicht
- Home
- Dokumentations-Index
- Quick Reference
- Sachstandsbericht 2025
- Features
- Roadmap
- Ecosystem Overview
- Strategische Übersicht
- Geo/Relational Storage
- RocksDB Storage
- MVCC Design
- Transaktionen
- Time-Series
- Memory Tuning
- Chain of Thought Storage
- Query Engine & AQL
- AQL Syntax
- Explain & Profile
- Rekursive Pfadabfragen
- Temporale Graphen
- Zeitbereichs-Abfragen
- Semantischer Cache
- Hybrid Queries (Phase 1.5)
- AQL Hybrid Queries
- Hybrid Queries README
- Hybrid Query Benchmarks
- Subquery Quick Reference
- Subquery Implementation
- Content Pipeline
- Architektur-Details
- Ingestion
- JSON Ingestion Spec
- Enterprise Ingestion Interface
- Geo-Processor Design
- Image-Processor Design
- Hybrid Search Design
- Fulltext API
- Hybrid Fusion API
- Stemming
- Performance Tuning
- Migration Guide
- Future Work
- Pagination Benchmarks
- Enterprise README
- Scalability Features
- HTTP Client Pool
- Build Guide
- Implementation Status
- Final Report
- Integration Analysis
- Enterprise Strategy
- Verschlüsselungsstrategie
- Verschlüsselungsdeployment
- Spaltenverschlüsselung
- Encryption Next Steps
- Multi-Party Encryption
- Key Rotation Strategy
- Security Encryption Gap Analysis
- Audit Logging
- Audit & Retention
- Compliance Audit
- Compliance
- Extended Compliance Features
- Governance-Strategie
- Compliance-Integration
- Governance Usage
- Security/Compliance Review
- Threat Model
- Security Hardening Guide
- Security Audit Checklist
- Security Audit Report
- Security Implementation
- Development README
- Code Quality Pipeline
- Developers Guide
- Cost Models
- Todo Liste
- Tool Todo
- Core Feature Todo
- Priorities
- Implementation Status
- Roadmap
- Future Work
- Next Steps Analysis
- AQL LET Implementation
- Development Audit
- Sprint Summary (2025-11-17)
- WAL Archiving
- Search Gap Analysis
- Source Documentation Plan
- Changefeed README
- Changefeed CMake Patch
- Changefeed OpenAPI
- Changefeed OpenAPI Auth
- Changefeed SSE Examples
- Changefeed Test Harness
- Changefeed Tests
- Dokumentations-Inventar
- Documentation Summary
- Documentation TODO
- Documentation Gap Analysis
- Documentation Consolidation
- Documentation Final Status
- Documentation Phase 3
- Documentation Cleanup Validation
- API
- Authentication
- Cache
- CDC
- Content
- Geo
- Governance
- Index
- LLM
- Query
- Security
- Server
- Storage
- Time Series
- Transaction
- Utils
Vollständige Dokumentation: https://makr-code.github.io/ThemisDB/