# Qt5/C++11 to Qt6/C++23 Migration Status **Last Updated**: 2026-08-22 12:45 **Session**: 9364ea1f-2ece-4ccb-8e2d-77e7a8886a06 --- ## 📊 Overall Status | Component | Status | Build | Tests | Notes | |-----------|--------|-------|-------|-------| | Lts/Common | ✅ Complete | ✅ | ✅ 1/1 | Fully migrated | | Lts/DDS | 🟡 Structure only | ⚠️ BUILD_RTI=OFF | ? | RTI compatibility issues | | Lts/Plugins | 🟡 Partial | ⚠️ BUILD_RTI=OFF | ? | 60 submodules | | Lts/Projects | 🟡 Structure only | ⚠️ BUILD_RTI=OFF | ? | 5 submodules | | Lts/Proxies | 🟡 Structure only | ⚠️ BUILD_RTI=OFF | ? | 13 submodules | | Lts/Services | 🟡 Structure only | ⚠️ BUILD_RTI=OFF | ? | 47 submodules | | TetraIF | 🟡 Partial | ⚠️ BUILD_RTI=OFF | ? | Migration in progress | | Z Modules | 🟡 Partial | ⚠️ BUILD_RTI=OFF | ? | Some submodules done | --- ## 🚨 Known Issues ### RTI Connext DDS 7.7.0 C++23 Compatibility (BLOCKER) **Issue**: RTI Connext DDS 7.7.0 headers contain bugs incompatible with C++20+: 1. **Wrong function name**: Headers call `DDS_OctetSeq_get_contiguous_buffer` but correct name is `DDS_OctetsSeq_get_contiguous_buffer` (missing 's') - Affected files: `AckResponseData.hpp`, `CorePolicy.hpp` 2. **C++20 brace initialization**: `DDS_SEQUENCE_INITIALIZER` requires brace-enclosed initialization in C++20+ - Affected files: `Vector.hpp`, `ContentFilteredTopicImpl.hpp`, `findImpl.hpp`, `discoveryImpl.hpp` **Workaround**: - Use C++17 standard (`-DCMAKE_CXX_STANDARD=17`) - but this defeats the C++23 migration goal - Patch RTI headers (not recommended for production) - Wait for RTI patch/newer version **Current Status**: Building with `BUILD_RTI=OFF` to continue migration work. RTI-dependent modules will be built as stubs. **Files with RTI bugs**: ``` /repo/external/rti_connext_dds-7.7.0/include/ndds/hpp/rti/sub/AckResponseData.hpp:162 /repo/external/rti_connext_dds-7.7.0/include/ndds/hpp/rti/core/policy/CorePolicy.hpp /repo/external/rti_connext_dds-7.7.0/include/ndds/hpp/rti/core/Vector.hpp:68 ``` ### ngl_codegen Dependency **Issue**: `ngl_codegen` executable requires `BUILD_GRANTLEE=ON` (Grantlee5 is Qt5-based). The `CODEGEN_IDL_SVC` macro depends on `ngl_codegen` for IDL generation. **Workaround**: Enable `BUILD_GRANTLEE=ON` temporarily for code generation, or pre-generate IDL files. ### svcPdmCommon Target Ordering **Issue**: `Lts/Plugins/ProjectDataManagement/Gui/PdmComboBox` references `svcPdmCommon` target before it's defined in `Lts/Services/ProjectDataManagement`. **Fix Required**: Reorder CMakeLists.txt to process services before plugins when `BUILD_RTI=ON`. --- ## ✅ Completed Work ### Build System Fixes (BUILD_RTI=OFF) 1. **LtsUtilsSettings export header**: Changed to angle brackets include 2. **LtsWidgets CMakeLists.txt**: Changed LtsUtilsSettings from PRIVATE to PUBLIC 3. **BatteryNotification**: Removed unused QDesktopWidget include 4. **DDS Modules**: Added proper BUILD_RTI guards to 6 CMakeLists.txt files 5. **Field naming**: Renamed fields to `m_` prefix in `training_area_telegrams.h` 6. **Target ordering**: Added Lts/Services/ProjectDataManagement before Lts/Plugins/ProjectDataManagement for TetraIF ### Git Operations - Submodule `qt-migration-legatus` on branch `feature/qt6-migration-basis-modules` - Main repo remote corrected to `git@devel:lifemaps/qt6-migration-pipeline.git` - Merge conflicts resolved ### Infrastructure - Docker image `migration-pipeline:ubuntu26.04` with Qt 6.8.3 - RTI Connext DDS 7.7.0 installed at `/repo/external/rti_connext_dds-7.7.0` - CI workflow configured with `submodules: recursive` --- ## 📝 Recent Changes ### Commit: 2c0a0d3f (main repo) - LtsUtilsSettings export header fix - LtsWidgets PUBLIC link fix - BatteryNotification QDesktopWidget removal - DDS module BUILD_RTI guards - training_area_telegrams.h field renaming - CMakeLists.txt target ordering fix ### Commit: c042faae (submodule) - Basis modules migration --- ## 🔄 Next Steps 1. **Fix svcPdmCommon target ordering** - Ensure services processed before plugins 2. **Continue module migration** - Focus on non-RTI dependent modules 3. **Field access updates** - Update all source files using renamed fields 4. **Automated status updates** - Implement cron job for MIGRATION_STATUS.md 5. **RTI resolution** - Contact RTI support for C++23 compatibility patch or workaround --- ## 🛠️ Build Commands ### BUILD_RTI=OFF (Working) ```bash docker run --rm -v $(pwd):/repo migration-pipeline:ubuntu26.04 \ cmake -S /repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus \ -B /repo/build -G Ninja \ -DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_PREFIX_PATH=/opt/Qt/6.8.3/gcc_64 \ -DBUILD_RTI=OFF docker run --rm -v $(pwd):/repo migration-pipeline:ubuntu26.04 \ cmake --build /repo/build --parallel ``` ### BUILD_RTI=ON (Blocked by RTI C++23 issues) ```bash # Currently fails due to RTI header bugs # Would require C++17 or RTI header patches ``` --- ## 📈 Migration Progress - **Modules fully migrated**: 1 (Lts/Common) - **Modules with structure**: 6 (DDS, Plugins, Projects, Proxies, Services, TetraIF partial) - **Build status**: ✅ BUILD_RTI=OFF, ⚠️ BUILD_RTI=ON blocked - **Test status**: 1/1 tests passing (Lts/Common) --- **Generated**: 2026-08-22 12:45 **Next auto-update**: After 4 hours or at next milestone