# Qt5/C++11 → Qt6/C++17 Migrationsstatus **Letztes Update:** 2026-08-22 **C++ Standard:** C++17 (RTI Connext DDS 7.7.0 Hard Blocker für C++20/23) --- ## 🎯 Wichtige Entscheidungen ### C++ Standard: C++17 (nicht C++23) **Begründung:** RTI Connext DDS 7.7.0 unterstützt offiziell nur C++14/C++17. C++20/C++23 verursacht Header-Kompilierungsfehler in RTI-Bibliotheken. **Folgen:** - CMAKE_CXX_STANDARD von 23 auf 17 gesetzt - Alle Toolchains, Presets und CI auf C++17 vereinheitlicht - C++23-Features können nicht verwendet werden, solange RTI verwendet wird - RTI ist hinter `BUILD_RTI=OFF` gekapselt (stabile Guards/Stubs) --- ## ✅ Abgeschlossene Arbeiten (Session 2026-08-22) ### 1. log4qt Build-Fix - **Problem:** 404 beim Download von axivion/log4qt - **Lösung:** Git-Klon von MEONMedical/Log4Qt verwendet - **C++17-Patches:** - `level.h`: Spaceship-Operator `<=>` durch explizite Vergleiche ersetzt (mValue statt mLevel) - `appenderskeleton.h`: `mThreshold.load()` für Thread-Safety ### 2. BUILD_RTI=OFF Build-Fixes - **generic_data_writer.h:** M_logger Member-Deklaration hinzugefügt - **generic_data_reader.h:** M_logger Member-Deklaration hinzugefügt - **generic_dtc_impl.h:** M_logger Member-Deklaration hinzugefügt - **dds_connector.h:** Duplikate entfernt, korrekte Stub-Signaturen ### 3. BUILD_RTI=ON Build-Fixes - **publisher.h/cpp:** `#include ` für kompletten Typ - **dds_connector.cpp:** Vollständig mit `#if BUILD_RTI` guards umschlossen - **DynamicDataImpl:** Incomplete type errors behoben ### 4. Git Remote Korrektur - **Alt:** Falscher origin eingetragen - **Neu:** `git@devel:lifemaps/qt6-migration-pipeline.git` (main branch) --- ## 📊 Build-Status | Konfiguration | Status | Probleme | |---------------|--------|----------| | BUILD_RTI=OFF | ❌ | QJsonObject-Fehler in training_area_telegrams.cpp (separates Qt6-Problem) | | BUILD_RTI=ON | ❌ | QJsonObject-Fehler in training_area_telegrams.cpp (separates Qt6-Problem) | **DDS/RTI-spezifische Fehler:** ✅ Alle behoben! --- ## 📝 Geänderte Dateien ### Submodule: qt-migration-legatus (feature/qt6-migration-basis-modules) | Datei | Änderung | Grund | |-------|----------|-------| | `CMakeLists.txt` | CMAKE_CXX_STANDARD 23→17 | RTI 7.7.0 C++17 requirement | | `Lts/DDS/Generic/generic_data_writer.h` | m_logger Member added | Missing declaration | | `Lts/DDS/Generic/generic_data_reader.h` | m_logger Member added | Missing declaration | | `Lts/DDS/DTC/generic_dtc_impl.h` | m_logger Member added | Missing declaration | | `Lts/DDS/DDSConnector/publisher.h` | DynamicDataImpl.hpp include | Complete type needed | | `Lts/DDS/DDSConnector/publisher.cpp` | DynamicDataImpl.hpp include | Complete type needed | | `Lts/DDS/DDSConnector/dds_connector.h` | Stub signatures fixed | Match cpp impl | | `Lts/DDS/DDSConnector/dds_connector.cpp` | #if BUILD_RTI guards | Conditional compilation | | `Lts/DDS/Generic/generic_base.h` | Minor fixes | Build cleanup | | `Lts/DDS/Generic/subscriber_listener.cpp` | Minor fixes | Build cleanup | | `Lts/Plugins/ComponentMonitor/...` | Minor fixes | Build cleanup | | `Lts/Plugins/SituationMapPlugin/...` | Minor fixes | Build cleanup | ### Hauptrepo: qt6-migration-pipeline (main) | Datei | Änderung | Grund | |-------|----------|-------| | `app/build_log4qt.sh` | Git clone + C++17 patches | 404 fix, C++17 compatibility | --- ## 🚧 Verbleibende Blocker ### 1. QJsonObject::toBinaryData / fromBinaryData **Betroffen:** `Lts/Common/LtsScriptTimeline/track_content_widget.cpp` **Problem:** Diese Methoden existieren in Qt6 nicht mehr **Lösung:** Auf `QJsonDocument::toJson()` / `QJsonDocument::fromJson()` umstellen ### 2. QJsonObject Initializer List **Betroffen:** `Lts/Proxies/TrainingAreaBase/training_area_telegrams.cpp:3168` **Problem:** Member function call `header` ohne `()` in initializer list **Lösung:** `header()` statt `header` aufrufen ### 3. Include-Pfade **Warnung:** `/repo/build_off/Z/src/NGLLogger/Z/src/NGLLogger: No such file or directory` **Lösung:** CMake include-Pfade prüfen --- ## 🔄 Nächste Schritte 1. **QJsonObject-Fixes:** toBinaryData/fromBinaryData → toJson/fromJson 2. **training_area_telegrams.cpp:** header() call fixen 3. **Include-Pfade:** NGLLogger-Pfad korrigieren 4. **Vollständigen Build testen:** BUILD_RTI=OFF und ON 5. **CTest ausführen:** Tests validieren 6. **Commits pushen:** Submodule zuerst, dann Hauptrepo --- ## 📌 Automatische Updates Diese Datei wird automatisch aktualisiert: - Alle 4 Stunden während aktiver Migrationsarbeit - Bei Erreichen von Meilensteinen (Build erfolgreich, Tests bestanden, etc.) - Automatischer Commit und Push ins Remote-Repo --- ## 🔗 Repository-Struktur ``` qt6-migration-pipeline (main) ├── qt-migration-legatus (submodule @ feature/qt6-migration-basis-modules) │ ├── qt5-before/qt5-legatus-legacy (Qt5/C++11) │ └── qt6-after/qt6-migrated-legatus (Qt6/C++17) ├── jenkins-ci-rme (submodule @ main) └── rpmbuild (submodule @ main) ``` **Git Remote:** `git@devel:lifemaps/qt6-migration-pipeline.git` **SSH Config:** `devel` → `gitea.life-maps.com:2223`