Session 009 results: - BUILD_RTI=ON DDS core components build successfully - libddsconnector.so created and linked - 6 files changed to fix RTI header includes and logger initialization - C++17 standard enforced due to RTI DDS 7.7.0 incompatibility with C++20+ Document includes: - Complete build validation summary - Technical decisions (C++17 enforcement, RTI integration pattern) - Migration progress by module - Next steps and timeline - Auto-update policy (every 4 hours / milestones) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Entire-Checkpoint: 01M0R16WYSYYXV34YR8Q4B1T3H
7.6 KiB
Qt5/C++11 → Qt6/C++17 Migration Status
Last Updated: 2026-08-22 12:45
Session: 009-build-rti-dds-guard-fixes-comp
Branch: main → qt-migration-legatus submodule → feature/qt6-migration-basis-modules
📊 Current Status
Build Validation Summary
| Configuration | Status | Notes |
|---|---|---|
| BUILD_RTI=OFF | ✅ SUCCESS (0 errors) | Completed in previous session |
| BUILD_RTI=ON | ✅ DDS Core SUCCESS | libddsconnector.so built successfully |
| C++ Standard | C++17 | Enforced due to RTI DDS 7.7.0 incompatibility with C++20+ |
Latest Commit
- Submodule:
d7c8c9e6→feature/qt6-migration-basis-modules - Main Repo:
4340d47a→main - Changes: BUILD_RTI=ON DDS header includes and logger initialization fixes
✅ Completed Work
Session 009: BUILD_RTI=ON DDS Fixes
Fixed Files (6 files changed, 22 insertions, 20 deletions)
-
Lts/DDS/Generic/dynamic_data_reader.h
- Added
#include <rti/core/xtypes/DynamicDataImpl.hpp> - Resolved incomplete type error when deleting
DynamicDataImpl*pointers - Added
m_loggermember variable declaration
- Added
-
Lts/DDS/DTS/generic_dts_impl.h
- Added
m_loggermember variable declaration (LOGGER_T&)
- Added
-
Lts/DDS/DDSConnector/pub_sub_base.cpp
- Fixed logger initialization pattern
- Changed from non-existent
NGL::getNGLLogger()toNGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger()
-
Lts/Common/LtsSession/lts_session_data_dds.h
- Added
DataPluginBase::Interfaceforward declaration to both#ifdef BUILD_RTIand#elseblocks - Ensures consistent compilation across both build configurations
- Added
-
Lts/Common/LtsUtils/LtsUtilsCore/CMakeLists.txt
- Fixed include path from
/..to/../..forLtsUtilsCoreHeaderOnlytarget
- Fixed include path from
-
tests/CMakeLists.txt
- Moved Grantlee test filtering BEFORE executable creation
- Prevents build failures when Grantlee is disabled
Build Results
✅ BUILD_RTI=OFF: 0 errors, 0 warnings (new)
✅ BUILD_RTI=ON: DDS core components compile successfully
- libddsconnector.so created
- ddsconnector library links successfully
⚠️ Remaining errors in unrelated modules (pre-existing):
- IsmDataPluginInterface: linker error -lsvcIsmCommon
- IsmShared: linker error -lsvcIsmCommon
- BuildingControlBsm: svctabcommon_export.h not found
Session 008: BUILD_RTI=OFF Validation
- Fixed Qt6 API compatibility issues (~558 QJsonObject initializer list fixes)
- Fixed Header struct member access patterns
- Fixed BatteryState/BatteryAlarm toJson()/fromJson() methods
- Fixed UAVAction, UAVStatus, and other telegram methods
- Added missing
#include <iomanip>to lts_coordinate.cpp - Fixed Qt6 include paths throughout codebase
- Result: 0 errors, only pre-existing warnings remain
🎯 Key Technical Decisions
C++17 Standard Enforcement
Decision: All build configurations enforce C++17 standard.
Rationale: RTI Connext DDS 7.7.0 has known header bugs with C++20/C++23 that cause compilation failures. While Qt 6.10.2 fully supports C++23, the RTI dependency is a hard blocker.
| Component | C++14 | C++17 | C++20 | C++23 |
|---|---|---|---|---|
| RTI Connext DDS 7.7.0 | ✅ | ✅ | ❌ | ❌ |
| Qt 6.10.2 | ✅ | ✅ | ✅ | ✅ |
| Project Standard | - | ✅ | - | - |
Impact: All CMakeLists.txt, presets, toolchains, and compiler flags unified to C++17.
RTI DDS Integration Pattern
Strategy: RTI Connext DDS is treated as an optional dependency with clean separation:
- BUILD_RTI=OFF: All RTI code excluded via
#ifdef BUILD_RTIguards - BUILD_RTI=ON: RTI headers included with stable guards/stubs
- No vendor header patches: RTI headers used as-is, compatibility handled in wrapper code
- Forward declarations: Minimize header dependencies for faster compilation
📋 Migration Progress
Completed Modules
| Module | Status | BUILD_RTI=OFF | BUILD_RTI=ON | Notes |
|---|---|---|---|---|
| Lts/Common | ✅ Complete | ✅ | ✅ | All submodules compile |
| Lts/DDS/Core | ✅ Complete | ✅ | ✅ | DDS core infrastructure |
| Lts/DDS/DTS | ✅ Complete | ✅ | ✅ | Generic DTS implementation |
| Lts/DDS/Generic | ✅ Complete | ✅ | ✅ | Dynamic data handling |
| Lts/DDS/DDSConnector | ✅ Complete | ✅ | ✅ | Pub/sub base classes |
| Lts/DDS/Discovery | 🟡 Partial | ✅ | ⏳ | Pending full validation |
| TetraIF | 🟡 Partial | ⏳ | ⏳ | Migration in progress |
| Z-Modules | 🟡 Partial | ⏳ | ⏳ | Some submodules complete |
Remaining Modules
- Lts/Plugins (60 submodules)
- Lts/Projects (5 submodules)
- Lts/Proxies (13 submodules)
- Lts/Services (47 submodules)
- TetraIF (completion)
- Z-Modules (completion)
🔧 Infrastructure
Git Configuration
Main Repo: git@devel:lifemaps/qt6-migration-pipeline.git (main)
Submodule: git@devel:lifemaps/qt-migration-legatus.git (feature/qt6-migration-basis-modules)
SSH Config: devel → gitea.life-maps.com:2223 (IdentityFile: ~/.ssh/twi-devel.gitea)
Docker Build Environment
Image: migration-pipeline:ubuntu26.04
Base: Ubuntu 26.04
Qt: 6.10.2
CMake: 3.16+
C++: 17 (enforced)
RTI: Connext DDS 7.7.0
Build Commands
# BUILD_RTI=OFF (default)
docker run --rm -v $(pwd):/repo migration-pipeline:ubuntu26.04 \
cmake --build /repo/build --parallel
# BUILD_RTI=ON
docker run --rm -v $(pwd):/repo migration-pipeline:ubuntu26.04 \
cmake --build /repo/build-rti --parallel
⏭️ Next Steps
Immediate (Next 4 hours)
-
⏳ Resolve non-DDS build issues
- IsmDataPluginInterface: Fix -lsvcIsmCommon linker dependency
- IsmShared: Fix -lsvcIsmCommon linker dependency
- BuildingControlBsm: Fix svctabcommon_export.h include path
-
⏳ Complete Lts/DDS module validation
- Build and test remaining DDS submodules
- Verify integration with Qt6 event loop
-
⏳ Update MIGRATION_STATUS.md
- Auto-commit every 4 hours or at milestones
- Track build status and blockers
Short-term (This week)
-
⏳ Resume Lts module migration
- Lts/Plugins: Prioritize core functionality submodules
- Lts/Proxies: Complete TrainingAreaBase and related modules
- Lts/Services: Address InfrastructureManagement dependencies
-
⏳ TetraIF completion
- Finish Qt6 migration
- Validate with existing tests
-
⏳ Z-Modules completion
- Identify remaining unmigrated submodules
- Complete migration and validation
Medium-term (Next 2 weeks)
-
⏳ Full build validation
- Complete BUILD_RTI=ON with all modules
- Integration testing with RTI DDS
-
⏳ CI/CD pipeline
- Validate GitHub Actions workflow
- Ensure submodule checkout works correctly
- Test artifact generation
📝 Auto-Update Policy
This document is automatically updated:
- Every 4 hours during active migration work
- At each milestone (successful build, module completion, blocker resolution)
- On every commit to main branch or submodule
Automation: Manual updates committed with migration work until automation script is implemented.
📞 Contact & References
- Repository:
lifemaps/qt6-migration-pipeline - Submodule:
lifemaps/qt-migration-legatus - Branch:
feature/qt6-migration-basis-modules - Session Log: Checkpoints 001-009 in
.git/directory - Migration Scripts:
./migration/,./final-migration/
Generated: 2026-08-22 12:45
Session: 009-build-rti-dds-guard-fixes-comp
Status: BUILD_RTI=ON DDS Core ✅ | Non-DDS Issues ⏳