# Qt5/C++11 to Qt6/C++23 Migration Status **Datum**: 2026-09-30 **Submodule Branch**: `feature/qt6-migration-basis-modules` @ d176b5e **Docker-Image**: `migration-pipeline:ubuntu26.04` --- ## 📊 Gesamtübersicht | Bereich | Status | BUILD_RTI=OFF | BUILD_RTI=ON | Notes | |---------|--------|---------------|--------------|-------| | **Lts/Common** | ✅ Vollständig | ✅ Build OK | ✅ Configure OK | Tests: 1/1 bestanden | | **Lts/DDS** | 🟡 Struktur vorhanden | ✅ Configure OK | ✅ Configure OK | Target-Kollisionen behoben | | **Lts/Plugins** | 🟡 Teilweise | ⚠️ Build-Fehler | ⚠️ Build-Fehler | Externe Dependencies fehlen | | **Lts/Projects** | 🟡 Struktur vorhanden | ✅ Configure OK | ✅ Configure OK | Warning: jsonschema app nicht gefunden | | **Lts/Proxies** | 🟡 Struktur vorhanden | ✅ Configure OK | ✅ Configure OK | - | | **Lts/Services** | 🟡 Struktur vorhanden | ✅ Configure OK | ✅ Configure OK | - | | **TetraIF** | 🟡 Teilweise | ✅ Configure OK | ✅ Configure OK | - | | **Z-Module** | 🟡 Teilweise | ⚠️ Build-Fehler | ⚠️ Build-Fehler | Externe Dependencies fehlen | --- ## 🔧 Behobene Probleme ### 1. FileStatus-Enum-Konflikt (✅ Behoben) **Problem**: `FileStatus` war bedingt definiert (int für BUILD_RTI=OFF, enum class für BUILD_RTI=ON) **Lösung**: Einheitliche `enum class FileStatus` Definition für beide Varianten **Files**: `flm_enums.hpp`, `flm_db.h` ### 2. QDebug operator<< für enum class (✅ Behoben) **Problem**: `enum class` wird nicht implizit zu int konvertiert für QDebug **Lösung**: Expliziter `operator<<` in `flm_enums.hpp` implementiert **Files**: `flm_enums.hpp` ### 3. Qt6Location Missing (✅ Behoben) **Problem**: Qt6Location Modul fehlte im Docker-Image **Lösung**: `qtlocation` und `qtpositioning` zu aqt install-qt Command hinzugefügt **Files**: `app/Dockerfile` ### 4. RTI Target-Kollisionen (✅ Behoben) **Problem**: ALIAS Targets für `ddsftc`, `ddsfts`, `ddsconnector` kollidierten mit Module-level Definitions **Ursache**: - FindRTI.cmake erstellt nur Targets für: `nddscore`, `nddsc`, `nddscpp2`, `rtiroutingservice` - `ddsftc`, `ddsfts`, `ddsconnector` existieren nicht in RTI 7.7.0 - Lts/DDS/FTC/CMakeLists.txt erstellt eigene INTERFACE Targets für diese Libraries **Lösung**: - ALIAS Targets nur für existierende RTI-Libraries erstellen (`nddscore`, `nddsc`, `nddscpp2`) - KEINE INTERFACE-Placeholder für nicht-existierende Libraries - Module definieren ihre eigenen Targets (ddsftc, ddsfts, ddsconnector) **Files**: `CMakeLists.txt` (Zeilen 254-285) --- ## ⚠️ Bekannte Probleme ### 1. Externe Dependencies fehlen (BUILD_RTI=ON) **Fehler**: `/usr/bin/ld.bfd: cannot find -lsvcIsmCommon: No such file or directory` **Betroffene Module**: IsmShared, andere Module mit externen Libraries **Ursache**: Externe Libraries (svcIsmCommon, etc.) sind im Docker-Container nicht verfügbar **Workaround**: BUILD_RTI=OFF für Build-Tests ohne RTI-Dependencies **Lösung**: CI muss externe Dependencies bereitstellen oder optional verlinken ### 2. NGLLogger Include-Pfad Warning **Warning**: `cc1plus: warning: /repo/build/Z/src/NGLLogger/Z/src/NGLLogger: No such file or directory` **Ursache**: Falscher Include-Pfad in CMake-Konfiguration **Status**: Kosmetisch, Build läuft trotzdem ### 3. jsonschema Application nicht gefunden **Warning**: `Projects: application 'jsonschema' not found, cannot validate apps.json files` **Status**: Kosmetisch, beeinflusst Build nicht --- ## 📝 Letzte Änderungen ### CMakeLists.txt (RTI Target-Kollisionen behoben) ```cmake # Vorher (falsch): IF(BUILD_RTI AND TARGET RTI::nddsc) ADD_LIBRARY(ddsconnector INTERFACE) # Kollision! ENDIF() # Nachher (korrekt): IF(BUILD_RTI AND TARGET RTI::nddsc) # Nur ALIAS für existierende RTI-Libraries ADD_LIBRARY(RTI::nddscore ALIAS RTI::nddscore) ADD_LIBRARY(RTI::nddsc ALIAS RTI::nddsc) ADD_LIBRARY(RTI::nddscpp2 ALIAS RTI::nddscpp2) # ddsftc/ddsfts/ddsconnector werden von Modulen selbst erstellt ENDIF() ``` ### flm_enums.hpp (QDebug operator<<) ```cpp #include inline QDebug operator<<(QDebug debug, FileStatus status) { QDebugStateSaver saver(debug); debug.nospace(); switch (status) { case FileStatus::Valid: debug << "FileStatus::Valid"; break; case FileStatus::Deleted: debug << "FileStatus::Deleted"; break; default: debug << "FileStatus::Unknown(" << static_cast(status) << ")"; break; } return debug; } ``` ### app/Dockerfile (Qt6Location) ```dockerfile RUN python3 -m aqt install-qt linux desktop 6.8.3 gcc_64 \ -m qtbase qtdeclarative qttools qtcharts qtdatavis3d \ qtlocation qtpositioning \ --outputdir /opt/Qt ``` --- ## 🧪 Build-Status ### BUILD_RTI=OFF - ✅ Configure: Erfolgreich - ⚠️ Build: Teilweise erfolgreich (externe Dependencies fehlen) ### BUILD_RTI=ON - ✅ Configure: Erfolgreich (nach Target-Kollision-Fix) - ⚠️ Build: Teilweise erfolgreich (externe Dependencies fehlen) --- ## 📋 Nächste Schritte 1. **Externe Dependencies klären**: svcIsmCommon und andere externe Libraries verfügbar machen 2. **Lts/Plugins Migration**: Verbleibende Untermodule migrieren 3. **Lts/Services Migration**: Verbleibende Untermodule migrieren 4. **TetraIF abschließen**: Restliche Migration durchführen 5. **Vollständigen Build testen**: Mit allen verfügbaren Dependencies --- ## 📌 Wichtige Hinweise - **qt5-before/qt5-legatus-legacy**: READ-ONLY, keine Änderungen erlaubt! - **Git Hooks**: `entire hooks git post-commit` verursacht lange Commit-Laufzeiten - **Submodule**: `qt-migration-legatus` zeigt auf `feature/qt6-migration-basis-modules` - **Externe Dependencies**: Liegen in `./external/` (RTI, ArcGIS) --- **Letztes Update**: 2026-09-30 **Nächster Checkpoint**: RTI Target-Kollisionen behoben