- Document C++17 decision (RTI 7.7.0 hard blocker for C++20/23) - Document BUILD_RTI DDS guard fixes completion - Update submodule reference to 8d456c7d Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Entire-Checkpoint: 01M0QA4DXB67EY0GGRT3Y0475M
5.1 KiB
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=OFFgekapselt (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 <rti/core/xtypes/DynamicDataImpl.hpp>für kompletten Typ - dds_connector.cpp: Vollständig mit
#if BUILD_RTIguards 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
- QJsonObject-Fixes: toBinaryData/fromBinaryData → toJson/fromJson
- training_area_telegrams.cpp: header() call fixen
- Include-Pfade: NGLLogger-Pfad korrigieren
- Vollständigen Build testen: BUILD_RTI=OFF und ON
- CTest ausführen: Tests validieren
- 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