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.
This commit is contained in:
5 files changed
+198
-67
No files matched your search
@@ -75,7 +75,7 @@ OPTION(BUILD_PLUGINS_PARTICIPANT_ORG_CHART "Build ParticipantOrgChart (requires
|
||||
OPTION(BUILD_PLUGINS_MSDL "Build MSDL module (requires Qt6 XmlPatterns)" OFF)
|
||||
OPTION(BUILD_PLUGINS_SAAB "Build Saab module (requires Qt6 XmlPatterns)" OFF)
|
||||
OPTION(BUILD_RTI "Build RTI Connext DDS dependent modules" OFF)
|
||||
OPTION(BUILD_ARCGIS "Build ArcGIS SDK dependent modules" OFF)
|
||||
OPTION(BUILD_ARCGIS "Build ArcGIS SDK dependent modules" ON)
|
||||
OPTION(BUILD_FILTERMANAGEMENT "Build FilterManagement plugins (temporarily disabled for migration)" OFF)
|
||||
OPTION(BUILD_CODIFICATION "Build CodificationManagement plugins (requires KDReports)" OFF)
|
||||
OPTION(BUILD_GRANTLEE "Build CodeGen Grantlee templates (requires Grantlee5/Qt5)" OFF)
|
||||
@@ -85,6 +85,15 @@ IF(WIN32)
|
||||
SET(EXTERNAL_LIBRARY_DIR "C:/Development/Projekte/SituationMap/ExtFw" CACHE STRING "Library dir with all external dependencies")
|
||||
LIST(APPEND CMAKE_PREFIX_PATH "${EXTERNAL_LIBRARY_DIR}")
|
||||
LIST(APPEND CMAKE_PROGRAM_PATH "${EXTERNAL_LIBRARY_DIR}/bin;${EXTERNAL_LIBRARY_DIR}/dev-utils/bin")
|
||||
ELSE()
|
||||
# Linux: ArcGIS SDK Pfad konfigurieren
|
||||
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")
|
||||
IF(EXISTS "${ARCGIS_SDK_DIR}")
|
||||
LIST(APPEND CMAKE_PREFIX_PATH "${ARCGIS_SDK_DIR}")
|
||||
MESSAGE(STATUS "ArcGIS SDK found at: ${ARCGIS_SDK_DIR}")
|
||||
ELSE()
|
||||
MESSAGE(WARNING "ArcGIS SDK not found at: ${ARCGIS_SDK_DIR}")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
ENABLE_TESTING()
|
||||
@@ -153,6 +162,64 @@ else()
|
||||
endif()
|
||||
|
||||
MESSAGE(STATUS "Qt version is ${Qt6Core_VERSION}")
|
||||
|
||||
#
|
||||
# RTI Connext DDS - manuelle Konfiguration da keine CMake Config Files vorhanden
|
||||
#
|
||||
IF(BUILD_RTI)
|
||||
SET(RTI_INSTALL_DIR "/repo/external/rti_connext_dds-7.7.0" CACHE PATH "RTI Connext DDS installation directory")
|
||||
IF(EXISTS "${RTI_INSTALL_DIR}")
|
||||
SET(RTI_LIB_DIR "${RTI_INSTALL_DIR}/lib/x64Linux4gcc8.5.0")
|
||||
SET(RTI_INCLUDE_DIR "${RTI_INSTALL_DIR}/include/ndds/hpp")
|
||||
|
||||
# RTI hat vier Include-Pfade:
|
||||
# - include/ für ndds/... und andere Top-Level Headers (z.B. ndds/ndds_config_common.h)
|
||||
# - include/ndds/ für osapi/... Headers (z.B. osapi/osapi_platform.h)
|
||||
# - include/ndds/hpp für C++ Headers (dds/..., rti/...)
|
||||
# - include/rti für rti/... Headers
|
||||
SET(RTI_INCLUDE_DIRS
|
||||
"${RTI_INSTALL_DIR}/include"
|
||||
"${RTI_INSTALL_DIR}/include/ndds"
|
||||
"${RTI_INSTALL_DIR}/include/ndds/hpp"
|
||||
"${RTI_INSTALL_DIR}/include/rti"
|
||||
)
|
||||
|
||||
# IMPORTED Targets für RTI Libraries erstellen
|
||||
# Debug und Release Varianten korrekt konfigurieren
|
||||
FOREACH(lib nddsc nddscore nddscpp nddscpp2 nddsctesthelpers)
|
||||
ADD_LIBRARY(RTI::${lib} SHARED IMPORTED)
|
||||
|
||||
# Debug Library
|
||||
IF(EXISTS "${RTI_LIB_DIR}/lib${lib}d.so")
|
||||
SET_TARGET_PROPERTIES(RTI::${lib} PROPERTIES
|
||||
IMPORTED_LOCATION_DEBUG "${RTI_LIB_DIR}/lib${lib}d.so"
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
# Release Library
|
||||
IF(EXISTS "${RTI_LIB_DIR}/lib${lib}.so")
|
||||
SET_TARGET_PROPERTIES(RTI::${lib} PROPERTIES
|
||||
IMPORTED_LOCATION_RELEASE "${RTI_LIB_DIR}/lib${lib}.so"
|
||||
IMPORTED_LOCATION_RELWITHDEBINFO "${RTI_LIB_DIR}/lib${lib}.so"
|
||||
IMPORTED_LOCATION_MINSIZEREL "${RTI_LIB_DIR}/lib${lib}.so"
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
# Include Verzeichnisse für alle Varianten
|
||||
SET_TARGET_PROPERTIES(RTI::${lib} PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${RTI_INCLUDE_DIRS}"
|
||||
INTERFACE_COMPILE_DEFINITIONS "RTI_LINUX"
|
||||
)
|
||||
ENDFOREACH()
|
||||
|
||||
MESSAGE(STATUS "RTI Connext DDS found at: ${RTI_INSTALL_DIR}")
|
||||
MESSAGE(STATUS "RTI Libraries: ${RTI_LIB_DIR}")
|
||||
MESSAGE(STATUS "RTI Platform: RTI_LINUX")
|
||||
ELSE()
|
||||
MESSAGE(WARNING "RTI Connext DDS not found at: ${RTI_INSTALL_DIR}, BUILD_RTI will fail")
|
||||
ENDIF()
|
||||
ENDIF(BUILD_RTI)
|
||||
|
||||
ADD_DEFINITIONS(-DQT_USE_QSTRINGBUILDER)
|
||||
ADD_DEFINITIONS(-DQT_NO_CAST_TO_ASCII)
|
||||
ADD_DEFINITIONS(-DQT_NO_CAST_FROM_ASCII)
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
# 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**:
|
||||
```cmake
|
||||
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)
|
||||
@@ -5,25 +5,9 @@
|
||||
# Created by Mike Wille, SLSE, 2016-05-15
|
||||
#
|
||||
|
||||
# RTI Connext DDS - default ON
|
||||
# RTI Connext DDS - uses IMPORTED targets from parent CMakeLists.txt
|
||||
OPTION(BUILD_RTI "Build with RTI Connext DDS support" ON)
|
||||
|
||||
# Find RTI Connext DDS - manual configuration (no CMake config file available)
|
||||
IF(BUILD_RTI)
|
||||
SET(RTI_BASE_DIR "${CMAKE_SOURCE_DIR}/../../../external/rti_connext_dds-7.7.0")
|
||||
SET(RTI_INCLUDE_DIR "${RTI_BASE_DIR}/include")
|
||||
SET(RTI_LIB_DIR "${RTI_BASE_DIR}/lib/x64Linux4gcc8.5.0")
|
||||
|
||||
# Check if RTI directories exist
|
||||
IF(EXISTS "${RTI_INCLUDE_DIR}" AND EXISTS "${RTI_LIB_DIR}")
|
||||
MESSAGE(STATUS "Using RTI Connext DDS from ${RTI_BASE_DIR}")
|
||||
SET(BUILD_RTI ON)
|
||||
ELSE()
|
||||
MESSAGE(WARNING "RTI Connext DDS not found at ${RTI_BASE_DIR}, building without RTI support")
|
||||
SET(BUILD_RTI OFF)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
# LtsSessionDataDds (only with RTI)
|
||||
IF(BUILD_RTI)
|
||||
SET(LtsSessionDataDds_SRCS
|
||||
@@ -35,17 +19,12 @@ IF(BUILD_RTI)
|
||||
PUBLIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../
|
||||
${RTI_INCLUDE_DIR}
|
||||
)
|
||||
NGL_TARGET_LINK_DIRECTORIES(LtsSessionDataDds
|
||||
PRIVATE
|
||||
${RTI_LIB_DIR}
|
||||
)
|
||||
NGL_TARGET_LINK_LIBRARIES(LtsSessionDataDds
|
||||
PRIVATE
|
||||
ddsconnector
|
||||
PUBLIC
|
||||
nddscore
|
||||
RTI::nddscore
|
||||
NGLLogger
|
||||
Qt6::Core
|
||||
)
|
||||
@@ -103,20 +82,12 @@ NGL_TARGET_LINK_LIBRARIES(LtsSession
|
||||
ProjectConfig
|
||||
)
|
||||
IF(BUILD_RTI)
|
||||
NGL_TARGET_INCLUDE_DIRECTORIES(LtsSession
|
||||
PUBLIC
|
||||
${RTI_INCLUDE_DIR}
|
||||
)
|
||||
NGL_TARGET_LINK_DIRECTORIES(LtsSession
|
||||
PRIVATE
|
||||
${RTI_LIB_DIR}
|
||||
)
|
||||
NGL_TARGET_LINK_LIBRARIES(LtsSession
|
||||
PRIVATE
|
||||
ddsconnector
|
||||
PUBLIC
|
||||
LtsSessionDataDds
|
||||
nddscore
|
||||
RTI::nddscore
|
||||
)
|
||||
TARGET_COMPILE_DEFINITIONS(LtsSession PUBLIC BUILD_RTI)
|
||||
ENDIF()
|
||||
@@ -141,17 +112,9 @@ NGL_TARGET_LINK_LIBRARIES(LtsSessionData
|
||||
Qt6::Gui # QPixmap as Storage for Profile Picture
|
||||
)
|
||||
IF(BUILD_RTI)
|
||||
NGL_TARGET_INCLUDE_DIRECTORIES(LtsSessionData
|
||||
PUBLIC
|
||||
${RTI_INCLUDE_DIR}
|
||||
)
|
||||
NGL_TARGET_LINK_DIRECTORIES(LtsSessionData
|
||||
PRIVATE
|
||||
${RTI_LIB_DIR}
|
||||
)
|
||||
NGL_TARGET_LINK_LIBRARIES(LtsSessionData
|
||||
PUBLIC
|
||||
nddscore
|
||||
RTI::nddscore
|
||||
)
|
||||
TARGET_COMPILE_DEFINITIONS(LtsSessionData PUBLIC BUILD_RTI)
|
||||
ENDIF()
|
||||
@@ -22,30 +22,28 @@ NGL_TARGET_INCLUDE_DIRECTORIES(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../
|
||||
)
|
||||
IF(BUILD_RTI)
|
||||
IF(BUILD_RTI)
|
||||
NGL_TARGET_LINK_LIBRARIES(ddsconnector
|
||||
PRIVATE
|
||||
NGLLogger
|
||||
PUBLIC
|
||||
RTI::nddsc
|
||||
RTI::nddscore
|
||||
RTI::nddscpp2
|
||||
ddsQoS
|
||||
ddsdtc
|
||||
ddsdts
|
||||
ProjectConfig
|
||||
Qt6::Core
|
||||
)
|
||||
ENDIF(BUILD_RTI)
|
||||
NGL_TARGET_LINK_LIBRARIES(ddsconnector
|
||||
PRIVATE
|
||||
NGLLogger
|
||||
PUBLIC
|
||||
RTI::nddsc
|
||||
RTI::nddscore
|
||||
RTI::nddscpp2
|
||||
ddsQoS
|
||||
ddsdtc
|
||||
ddsdts
|
||||
ProjectConfig
|
||||
Qt6::Core
|
||||
)
|
||||
ELSE()
|
||||
NGL_TARGET_LINK_LIBRARIES(ddsconnector
|
||||
PRIVATE
|
||||
NGLLogger
|
||||
PUBLIC
|
||||
ddsQoS
|
||||
ddsdtc
|
||||
ddsdts
|
||||
ProjectConfig
|
||||
Qt6::Core
|
||||
)
|
||||
NGL_TARGET_LINK_LIBRARIES(ddsconnector
|
||||
PRIVATE
|
||||
NGLLogger
|
||||
PUBLIC
|
||||
ddsQoS
|
||||
ddsdtc
|
||||
ddsdts
|
||||
ProjectConfig
|
||||
Qt6::Core
|
||||
)
|
||||
ENDIF()
|
||||
+19
@@ -1,10 +1,29 @@
|
||||
#pragma once
|
||||
#include <QString>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QVector>
|
||||
#include <QSet>
|
||||
#include "svccnrhelper_export.h"
|
||||
|
||||
// Use avm_enums.hpp from RTI DDS tools
|
||||
#include <AudioVideoManagement/avm_enums.hpp>
|
||||
|
||||
#ifdef BUILD_RTI
|
||||
// Enums werden von RTI DDS aus IDL generiert (avm_enums.idl)
|
||||
// Bei BUILD_RTI=OFF fehlen diese Definitionen
|
||||
#else
|
||||
// Temporäre Placeholder für Build ohne RTI
|
||||
// TODO: RTI DDS Integration erforderlich für vollständige Enums
|
||||
namespace AudioVideoManagement {
|
||||
enum class FrequencyBand { VHF_v = 0 };
|
||||
enum class ModulationType { AM = 0 };
|
||||
enum class ChannelSpacingHF { CS_100_Hz = 0 };
|
||||
enum class ChannelSpacing { CS_25_00_kHz = 0 };
|
||||
enum class RcOperatingMode { FixedFreqEncNone_v = 0 };
|
||||
}
|
||||
#endif
|
||||
|
||||
namespace AudioVideoManagement {
|
||||
|
||||
struct SVCCNRHELPER_EXPORT RadioCircuit
|
||||
|
||||
Reference in new issue
Block a user