Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/EXTERNAL_DEPENDENCIES.md
T
torsten b9a807c92a RTI BUILD_RTI=OFF Workaround und External Dependencies Dokumentation
- BUILD_RTI Default auf OFF gesetzt (GCC-Inkompatibilität mit RTI 7.7.0)
- RTI_INCLUDE_DIRS mit vier Pfaden konfiguriert (include/, include/ndds/, include/ndds/hpp, include/rti)
- RTI_LINUX Compile-Definition zu IMPORTED Targets hinzugefügt
- RTI IMPORTED Targets manuell erstellt (nddsc, nddscore, nddscpp, nddscpp2)
- cnr_frequency_planning_helper.h: Fehlende Qt-Includes hinzugefügt
- EXTERNAL_DEPENDENCIES.md erstellt zur Dokumentation fehlender Dependencies

Temporärer Workaround bis RTI-Version mit GCC 13.x Kompatibilität verfügbar ist.
2026-08-20 21:11:22 +02:00

3.0 KiB

Fehlende External Dependencies - Qt6 Migration

Status: BUILD_RTI=OFF (temporärer Workaround)

RTI Connext DDS 7.7.0 - GCC Inkompatibilität

Problem: RTI Connext DDS 7.7.0 ist nicht kompatibel mit der GCC-Version im Ubuntu 26.04 Container.

Fehlermeldung:

/repo/external/rti_connext_dds-7.7.0/include/ndds/hpp/dds/core/Array.hpp:256:14:
error: 'DDS_OctetSeq_get_contiguous_buffer' was not declared in this scope;
did you mean 'DDS_OctetsSeq_get_contiguous_buffer'?

Ursache: RTI 7.7.0 verwendet veraltete API-Namen die nicht mit neueren GCC-Versionen kompatibel sind.

Betroffene Module (können ohne RTI nicht gebaut werden):

  • Lts/Proxies/CombatNetRadio - Benötigt Enums aus avm_enums.idl:
    • ModulationType
    • ChannelSpacing
    • ChannelSpacingHF
    • RcOperatingMode
    • FrequencyBand
  • Lts/DDS - DDS Connector und QoS-Module
  • Lts/Common/LtsSession - LtsSessionDataDds (DDS-Integration)
  • Alle Module die DDS-generierte Types verwenden

Lösungsoptionen:

  1. RTI Upgrade: Neuere RTI Connext DDS Version suchen die GCC im Ubuntu 26.04 Container unterstützt
  2. GCC Downgrade: Ältere GCC-Version im Container verwenden (z.B. GCC 8.5.0 wie von RTI erwartet)
  3. RTI Patches: RTI Header patchen um API-Namen zu korrigieren (nicht empfohlen)

Aktueller Workaround:

  • BUILD_RTI=OFF als Default in CMakeLists.txt
  • Betroffene Module werden nicht gebaut
  • Placeholder-Enums in Headern für Build ohne RTI (siehe cnr_frequency_planning_helper.h)

ArcGIS Maps SDK for Qt 300.0.0

Status: ✅ Konfiguriert und im Build enthalten

Pfad: ./external/ArcGIS/MapsSDK_Qt_300.0.0/ CMake-Option: BUILD_ARCGIS=ON (Default)

Betroffene Module:

  • Lts/Viewer/SituationMap - Verwendet ArcGIS::ArcGIS Target

Konfiguration:

SET(ARCGIS_SDK_DIR "/repo/external/ArcGIS/MapsSDK_Qt_300.0.0/ArcGIS_Maps_SDK_Qt_300.0.0/qt300.0.0/sdk" CACHE STRING "ArcGIS Runtime SDK for Qt directory")

Build ohne RTI - Erwartete Fehler

Folgende Module können ohne RTI DDS nicht gebaut werden und werden übersprungen/fehlgeschlagen:

Modul Status Grund
Lts/Common/LtsSession ❌ BLOCKED LtsSessionDataDds benötigt RTI
Lts/DDS/* ❌ BLOCKED DDS Connector, QoS, Discovery benötigen RTI
Lts/Proxies/CombatNetRadio ⚠️ PARTIAL Enums als Placeholder, aber keine DDS-Integration
Lts/Proxies/CombatNetRadio/DDS ❌ BLOCKED DDS-spezifischer Code

Nächste Schritte

  1. Build ohne RTI validieren - Alle nicht-RTI Module erfolgreich bauen
  2. RTI-Problem dokumentieren - Diese Datei dient als Referenz
  3. RTI-Lösung evaluieren - Mit RTI-Team Kontakt aufnehmen wegen GCC-Kompatibilität
  4. Migration fortsetzen - Module ohne RTI-Abhängigkeit vollständig migrieren

Erstellt: 2026-08-20 Letzte Aktualisierung: 2026-08-20 Qt-Version: 6.10.2 RTI-Version: 7.7.0 (incompatible) Container: Ubuntu 26.04 (GCC 13.x)