One unit-test/ directory per module/target, mirroring the existing
TetraIF/unit-test/ layout (one QtTest executable per module, guarded by
BUILD_TESTING and the module target, each registered with ctest):
Lts/Common/CodeGen codegen_unit_test
Lts/Common/LtsCoordinate ltscoordinate_unit_test
Lts/Common/LtsSession ltssession_unit_test
Lts/DDS/Core ddscore_unit_test
Lts/DDS/QosProfile ddsqos_unit_test
Lts/Tools/LogViewer logviewer_unit_test
Lts/Tools/SqlBrowser sqlbrowser_unit_test
Z/src/NGLLogger ngllogger_unit_test
Z/src/WMS_Interface wms_json_ds_unit_test
Z/src/nglapplication nglcoreapplication_unit_test
Z/src/nglcompression nglcompression_unit_test
Z/src/nglsettings nglsettings_unit_test
Z/src/ngltranslator ngltranslator_unit_test
Where a module is built with hidden visibility and has no export macro
(LogViewer, SqlBrowser, ngltranslator, NGLLogger, nglcompression,
nglsettings), its sources are compiled directly into the test
executable, the same pattern as prtcnv_unit_test.
ctest baseline in the container (QT_QPA_PLATFORM=offscreen): 20/23
passed (13 new + 7 pre-existing in-scope tests), 3 Not Run as before
(nglcomp_test, GrantleeParserSmoke, utils_test).
README: ctest baseline table extended to the 23 registered tests and
section 2.4 now documents the per-module test layout. ddsview has no
unit test (GUI tool, XmlHelper needs the DDS dynamic-xtypes runtime).
Continue the Qt5->Qt6 migration so the LTS Projects (Group 10) and LTS
Application (Group 11) compile, link, and ctest runs.
Qt5->Qt6 API migration (resolves removed/deprecated Qt6 APIs) across Lts
Tools and Apps, e.g. QAction->QActionGroup, QAbstractSocket::errorOccurred,
Qt::SkipEmptyParts, QRandomGenerator, QInputDevice::DeviceType,
QRegularExpression, QLatin1Literal->QStringLiteral, and the SampleModel
m_description->description rename.
CMake build fixes:
- CMakeLists.txt: add Lts/Common to CMAKE_AUTOMOC_INCLUDE_DIRECTORIES so moc
resolves Q_INTERFACES(ProjectPlugin::Plugin) for the migrated Projects.
- cmake/NGLMacros.cmake: NGL_COMPILE_RESOURCES - replace return() (which aborts
the calling CMakeLists.txt) with an if/else/endif.
- OpApp/THP: guard the ArcGISQt5Hack link with $<IF:$<TARGET_EXISTS:...>> (the
target is absent when the SituationMap viewer is stubbed); matches
CentralEffectSimulation.
- LtsSession: prefer the in-tree svcCoreClient target over a FIND_LIBRARY in
/usr/local/lib.
- CnrProxyTester/DotMatrixDisplay: set AUTOUIC_SEARCH_PATHS for the ui/ subdir.
- TopicDiscover: link NGLLogger.
Export-header visibility stubs (expand the empty *_EXPORT macro to
__attribute__((visibility("default"))); the build sets -fvisibility=hidden and
these stubs shadow the CMake-generated header):
- include/LtsProjectionWorkstation/ltsprojectionworkstation_export.h (fixes
undefined reference to LtsProjectionWorkstation::getInstance /
setProjectionOperatorPreset)
- include/LtsSession/ltssession_export.h, include/LtsUtilsGuiDds/ltsutilsguidds_export.h (same pattern)
New plugin modules (copied from legacy) so LtsAppDescriptorChecker finds the
gui:3 IIDs referenced by the Projects' apps.json:
- TakeHomePackageManager/OldTHP gui:3:tpm.man, gui:3:tpm.usb
- PresentationManagement/.../ScriptEditor gui:3:pre.script.edit
- Timeline/Gui/EventTimelineClassic gui:3:tln.view
new_docker_build.sh: correct group targets to the actual CMake target names,
guard LtsReportDisplay on BUILD_CODIFICATION, and skip modules unavailable in
the prebuilt image (AsmWorkstationCertifier/botan2, TrajectoryWidget,
VideoImport, thp_viewer/VLC).
- dynamic_data_reader.h: Add #include <rti/core/xtypes/DynamicDataImpl.hpp>
to resolve incomplete type error when deleting DynamicDataImpl pointers
- generic_dts_impl.h: Add m_logger member variable declaration (LOGGER_T&)
- dynamic_data_reader.h: Add m_logger member variable declaration (LOGGER_T&)
- pub_sub_base.cpp: Fix logger initialization to use
NGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger() instead of
non-existent NGL::getNGLLogger()
- lts_session_data_dds.h: Add DataPluginBase::Interface forward declaration
to both #ifdef BUILD_RTI and #else blocks for consistent compilation
- LtsUtilsCore/CMakeLists.txt: Fix include path from /.. to /../..
for LtsUtilsCoreHeaderOnly target
- tests/CMakeLists.txt: Move Grantlee test filtering BEFORE executable
creation to prevent build failures when Grantlee is disabled
Build validation:
- BUILD_RTI=OFF: ✅ 0 errors (previously completed)
- BUILD_RTI=ON: ✅ DDS core components compile successfully
- libddsconnector.so created successfully
- Remaining build errors in unrelated modules (IsmDataPluginInterface,
IsmShared, BuildingControlBsm) are pre-existing dependency issues
C++ Standard: Enforcing C++17 across all builds due to RTI Connext DDS 7.7.0
incompatibility with C++20/C++23 (known header bugs with newer standards).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- gna_nasat_aircraft_model.h/.cpp: Include-Pfad zu <GuezNasat/logger.h>
korrigiert, Logger-Initialisierung auf GuezNasat::getLogger() umgestellt
- gna_nasat_aircraft_part_model.h/.cpp: Methodensignaturen von
ParticipantManagement::DataModification zu globalem DataModification
geändert für konsistente Type-Verwendung
- gna_dtc.h: Include-Pfad für logger.h korrigiert
- gna_nasat_aircraft.h: Member-Variablen zu Getter-Methoden geändert
- CMakeLists.txt: Include-Verzeichnis für GuezNasat-Modul hinzugefügt
Alle Callback-Lambdas verwenden jetzt das globale DataModification-Enum
aus LtsUtilsCore statt dem veralteten ParticipantManagement-Namespace.
- Removed all STUB files for external dependencies:
- lts_session_stub.h/cpp
- lts_session_data_dds_stub.h/cpp
- lts_session_lock_handler_stub.h
- elevation_map_manager.h/cpp (entire ElevationMap STUB)
- avm_enums_stub.hpp
- Test files for STUBs
- Updated LtsSession/CMakeLists.txt:
- Removed conditional BUILD_RTI logic for STUBs
- Always use real implementation files
- BUILD_RTI=ON is now the default
- External dependencies are now expected in ./external/
- RTI Connext DDS 7.7.0
- ArcGIS SDK (runtime mount)
- Other deps to be integrated step by step
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add m_logger member to GuiPluginInterface private section
- Create ltsmultimonitor_export.h as alias for lts_multi_monitor_export.h
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Conditionally include lts_session_lock_handler.cpp only when BUILD_RTI=ON
- Stub header provides inline implementations when RTI is disabled
- Prevents redefinition errors in stub mode
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- cmake/FindRTI.cmake: Add INTERFACE placeholder targets when RTI not found
- cmake/FindRTI.cmake: Force BUILD_RTI=OFF when RTI not installed
- Lts/Common/LtsSession/CMakeLists.txt: Make LtsSessionDataDds conditional on BUILD_RTI
- Lts/Viewer/CMakeLists.txt: Make LtsDataView conditional on BUILD_RTI
- Lts/Plugins/*/CMakeLists.txt: 97 plugin files wrapped in BUILD_RTI conditionals
- cmake/NGLMacros.cmake: Fix NGL_ADD_BIG_RESOURCES macro (removed premature return())
- Multiple Qt6 API fixes: QLinkedList→std::list, QStringRef→QStringView, etc.
- BUILD_RTI_FIXES_SUMMARY.md: Comprehensive documentation of all fixes
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>