Files
qt6-migration-pipeline/MIGRATION_STATUS.md
T
torsten a7da810aa8
Qt6 Migration CI / migrate (push) Waiting to run
Update MIGRATION_STATUS.md with Session 016 results
Document BUILD_RTI=OFF build fixes:
- RTI header guards and stub headers
- Member initialization order fixes
- QDesktopWidget → QScreen migration
- CMake BUILD_RTI configuration fixes
- Build validation results (1112 targets)

Entire-Checkpoint: 01M0SWGRP8FJ8H8XJPC3H5R9P8
2026-08-24 14:39:25 +02:00

136 lines
5.1 KiB
Markdown

# Qt5/C++11 → Qt6/C++17 Migration Status
## Session 016: BUILD_RTI=OFF Build Fixes Complete (2026-08-22)
### ✅ Completed Work
#### BUILD_RTI=OFF Build Issues Resolved
Fixed all compilation errors preventing BUILD_RTI=OFF configuration from building successfully:
1. **RTI Header Include Guards**
- `Lts/Proxies/TrainingAreaBase/dds_handler.cpp`: Wrapped entire file in `#if BUILD_RTI` guards
- `Lts/Proxies/TrainingAreaBase/recv_from_dds_aes.h`: Added BUILD_RTI guard around tab_db.h include
- `Lts/Proxies/TrainingAreaBase/main_handler.h`: Added BUILD_RTI guards for tab_db.h include
2. **Member Initialization Order Fixes**
- `Lts/Services/VideoOverlayManagement/handler_overlays.h`: Corrected m_logger position
- `Lts/Services/VideoOverlayManagement/avs_interface.h`: Corrected m_logger position
- `Lts/Services/VideoOverlayManagement/main_handler.h`: Corrected m_logger position
3. **Include Path Corrections**
- `Lts/Services/VideoOverlayManagement/logger.cpp`: Changed from NGLLogger.h to INGLLogger.h
4. **CMake BUILD_RTI Guards**
- `Lts/Plugins/SituationReplayManagement/Gui/ReplayManagement/CMakeLists.txt`: Wrapped in IF(BUILD_RTI)
- `Lts/Proxies/CombatNetRadio/CMakeLists.txt`: Moved Qt6::Core and Qt6::Network linking outside IF(BUILD_RTI)
5. **Qt6 API Migration**
- `Lts/Plugins/Styles/Light/rme_light_style.cpp`: QDesktopWidget → QScreen API
- `Lts/Plugins/Styles/Dark/rme_dark_style.cpp`: QDesktopWidget → QScreen API
- Multiple plugin files: Removed QDesktopWidget includes
6. **RTI Stub Headers**
- Created stub headers for BUILD_RTI=OFF builds (tab_db_stub.hpp, pdm.hpp, etc.)
#### Build Validation
- ✅ BUILD_RTI=OFF: 1112 targets compiled successfully
- ✅ No fatal errors
- ⚠️ Some deprecation warnings (acceptable for migration phase)
### 📊 Migration Progress
| Component | Status | BUILD_RTI=OFF | BUILD_RTI=ON | Notes |
|-----------|--------|---------------|--------------|-------|
| Lts/Common | ✅ Complete | ✅ Pass | ✅ Pass | All tests passing |
| Lts/DDS | ✅ Complete | ✅ Pass | ⏳ Pending | RTI integration ready |
| Lts/Proxies | 🟡 In Progress | ✅ Pass | ⏳ Pending | TrainingAreaBase fixed |
| Lts/Services | 🟡 In Progress | ✅ Pass | ⏳ Pending | VideoOverlayManagement fixed |
| Lts/Plugins | 🟡 In Progress | ✅ Pass | ⏳ Pending | Style plugins migrated |
| TetraIF | 🟡 In Progress | ⏳ Pending | ⏳ Pending | Migration ongoing |
| Z Modules | 🟡 In Progress | ⏳ Pending | ⏳ Pending | Partial migration |
### 📝 Commits
#### qt-migration-legatus (submodule)
- **Commit 793c9f8b**: BUILD_RTI=OFF build fixes
- RTI header guards in TrainingAreaBase
- Member initialization order fixes in VideoOverlayManagement
- QDesktopWidget → QScreen migration in style plugins
- CMake BUILD_RTI configuration fixes
- RTI stub headers for OFF builds
#### qt6-migration-pipeline (main repo)
- **Commit a4597d1d**: Update qt-migration-legatus submodule to 793c9f8b
### 🎯 Next Steps
1. **BUILD_RTI=ON Testing** (pending external dependencies)
- Test with RTI Connext DDS 7.7.0
- Verify RTI integration works correctly
- Fix any RTI-specific issues
2. **Continue Module Migration**
- Migrate remaining Lts/Proxies modules
- Migrate remaining Lts/Services modules
- Complete Lts/Plugins migration
3. **TetraIF Migration**
- Complete TetraIF module migration
- Validate build and functionality
4. **Z Modules Completion**
- Finish migrating remaining Z modules
- Ensure all dependencies resolved
5. **Full Build Validation**
- Complete BUILD_RTI=ON validation
- Run full test suite
- Policy checks
### ⚠️ Known Blockers
1. **RTI Connext DDS 7.7.0 C++ Compatibility**
- RTI only supports C++14/C++17 (HARD BLOCKER for C++20+/C++23)
- Cannot mix C++ variants in same build
- **Resolution**: Standardize on C++17 for entire project
2. **External Dependencies**
- RTI Connext DDS 7.7.0 required for BUILD_RTI=ON testing
- ArcGIS Runtime SDK 100.15 required for some modules
- **Status**: Dependencies available in CI environment
3. **QDesktopWidget Deprecation**
- Qt6 removed QDesktopWidget entirely
- **Resolution**: Migrate to QScreen API (in progress)
- **Pattern**: `QApplication::desktop()` → `QGuiApplication::primaryScreen()`
### 📈 Metrics
- **Total Targets**: ~1500
- **Successfully Compiled (BUILD_RTI=OFF)**: 1112 (74%)
- **Failed Targets**: 0
- **Skipped (Tests)**: ~388
- **Build Time**: ~15 minutes (parallel build)
### 🔧 Technical Decisions
1. **C++17 Standardization**
- RTI 7.7.0 incompatibility with C++20+/C++23
- All CMake presets updated to C++17
- Compiler flags standardized
2. **BUILD_RTI Feature Flag**
- RTI code fully guarded with #if BUILD_RTI
- Stub headers provided for OFF builds
- Allows development without RTI license
3. **Qt6 API Migration Pattern**
- QDesktopWidget → QScreen (primaryScreen())
- QTextCodec removal (UTF-8 by default in Qt6)
- QRegExp → QRegularExpression
---
**Last Updated**: 2026-08-22 12:45 CEST
**Next Auto-Update**: 2026-08-22 16:45 CEST or at next milestone