Files
qt-migration-legatus/EXTERNAL_DEPENDENCIES.md
T

174 lines
3.7 KiB
Markdown

# Externe Dependencies - Qt6 Migration
## Übersicht
Diese Datei dokumentiert alle externen Dependencies, die für den Qt6-Build benötigt werden.
Die Integration erfolgt schrittweise mit BUILD_GUARDs statt STUBs.
---
## 1. ArcGIS Maps SDK for Qt
**Pfad**: `./external/ArcGIS/MapsSDK_Qt_300.0.0/`
**Version**: 300.0.0
**Status**: ✅ Vorhanden, im Build integriert
### Integration im Build
```cmake
# CMAKE_PREFIX_PATH erweitern
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SOURCE_DIR}/external/ArcGIS/MapsSDK_Qt_300.0.0")
# ArcGIS-Bibliotheken verlinken
target_link_libraries(your_target PRIVATE
ArcGISRuntime
)
```
### BUILD_GUARD
```cpp
#ifdef BUILD_WITH_ARCGIS
#include "ArcGISRuntime.h"
// ArcGIS-spezifischer Code
#endif
```
---
## 2. RTI Connext DDS
**Pfad**: `./external/rti_connext_dds-7.7.0/`
**Version**: 7.7.0
**Status**: ✅ Vorhanden, BUILD_WITH_EXTERNAL_DDS Guard implementiert
### Lizenz
- **Datei**: `~/swy/sandbox/rti_license.dat`
- **Typ**: RTI Entwicklerlizenz (leere Datei vom Installer)
- **Integration**: Lizenz muss zur Build-Zeit verfügbar sein
### Integration im Build
```cmake
# RTI Connext DDS finden
set(RTI_CONNEXTDDS_DIR "${CMAKE_SOURCE_DIR}/external/rti_connext_dds-7.7.0")
find_package(RTIConnextDDS REQUIRED)
# Bibliotheken verlinken
target_link_libraries(your_target PRIVATE
rti_connext_dds::core
rti_connext_dds::infrastructure
)
```
### BUILD_GUARD
```cpp
#ifdef BUILD_WITH_EXTERNAL_DDS
#include <dds/core/types.hpp>
// DDS-spezifische Typen: ChargeType, GearClass, Dtc, Marker, Ftc, etc.
#endif
```
### STUB-Implementation (ohne DDS)
```cpp
#ifndef BUILD_WITH_EXTERNAL_DDS
// Primitive Typen statt DDS-Enums
using ChargeType = int;
using GearClass = int;
// etc.
#endif
```
---
## 3. GeographicLib
**Pfad**: `./external/GeographicLib/`
**Status**: ✅ Vorhanden und gebaut
### Integration
```cmake
# GeographicLib finden
find_package(GeographicLib REQUIRED)
target_link_libraries(your_target PRIVATE
GeographicLib::GeographicLib
)
```
---
## 4. Grantlee
**Pfad**: `./external/grantlee/`
**Status**: ✅ Vorhanden und gebaut
### Integration
```cmake
# Grantlee finden
find_package(Grantlee5 REQUIRED COMPONENTS templates texttags)
target_link_libraries(your_target PRIVATE
Grantlee5::Templates
Grantlee5::TextTags
)
```
---
## Schrittweise Integration
### Phase 1: Basis-Dependencies (✅ abgeschlossen)
- [x] GeographicLib
- [x] Grantlee
- [x] BUILD_WITH_EXTERNAL_DDS Guard-System
### Phase 2: ArcGIS Integration (🔄 in Arbeit)
- [ ] CMake-Integration im Haupt-Build
- [ ] Alle ArcGIS-Uses mit Guards versehen
- [ ] Build ohne ArcGIS testen
### Phase 3: RTI DDS Integration (📋 geplant)
- [ ] CMake-Integration im Haupt-Build
- [ ] Lizenz-Handling im Build-System
- [ ] Alle DDS-Uses mit Guards versehen
- [ ] Build ohne DDS testen
---
## Docker-Integration
Für den Docker-Build müssen externe Dependencies entweder:
1. **Ins Image kopiert** werden (für CI)
2. **Als Volume gemounted** werden (für lokale Tests)
3. **Heruntergeladen** werden während des Builds
### Beispiel Dockerfile-Erweiterung
```dockerfile
# Externe Dependencies kopieren
COPY external/ /opt/external/
# Pfade setzen
ENV CMAKE_PREFIX_PATH="/opt/external/ArcGIS/MapsSDK_Qt_300.0.0;/opt/external/rti_connext_dds-7.7.0"
```
---
## Build-Optionen
### Mit allen Dependencies
```bash
cmake -S . -B build \
-DBUILD_WITH_EXTERNAL_DDS=ON \
-DBUILD_WITH_ARCGIS=ON \
-DCMAKE_PREFIX_PATH="/path/to/external/ArcGIS;/path/to/external/rti_connext_dds"
```
### Ohne externe Dependencies (STUB-Modus)
```bash
cmake -S . -B build \
-DBUILD_WITH_EXTERNAL_DDS=OFF \
-DBUILD_WITH_ARCGIS=OFF
```
---
**Erstellt**: 2026-08-21
**Letzte Aktualisierung**: 2026-08-21
**Status**: Dokumentiert für schrittweise Integration