- MIGRATION_STATUS.md: RTI Target-Kollisionen behoben dokumentiert - app/Dockerfile: Qt6Location und qtpositioning Module hinzugefügt BUILD_RTI=ON Configure erfolgreich, Build benötigt externe Dependencies Entire-Checkpoint: 01M193RV6S8CGZZ9ME1VTWY5XB
5.8 KiB
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,ddsconnectorexistieren 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)
# 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<<)
#include <QDebug>
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<int>(status) << ")"; break;
}
return debug;
}
app/Dockerfile (Qt6Location)
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
- Externe Dependencies klären: svcIsmCommon und andere externe Libraries verfügbar machen
- Lts/Plugins Migration: Verbleibende Untermodule migrieren
- Lts/Services Migration: Verbleibende Untermodule migrieren
- TetraIF abschließen: Restliche Migration durchführen
- 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-commitverursacht lange Commit-Laufzeiten - Submodule:
qt-migration-legatuszeigt auffeature/qt6-migration-basis-modules - Externe Dependencies: Liegen in
./external/(RTI, ArcGIS)
Letztes Update: 2026-09-30
Nächster Checkpoint: RTI Target-Kollisionen behoben