Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/tests/CMakeLists.txt
T
torstenandCopilot 2b8f3f02c7 Add Group 9 (R,S,T,V,W) LTS Tools migration support
- Added --group9/--no-group9 command line options to new_docker_build.sh
- Added BUILD_GROUP9 variable and GROUP9_TARGETS array with 12 buildable tools:
  RestClientUi, ScreenIdShow, SerialToTcpConverter, Splash, SqlBrowser,
  TextEditorTest, Times, TopicDiscover, TrajectoryWidget, VapixConfig,
  VideoImport, WlsRandomPositions
- Added Docker environment exports for BUILD_GROUP9 and GROUP9_TARGETS
- Added run_build_group call for Group 9 in build sequence
- Created 12 CTest test files for Group 9 tools
- Added Group 9 exclusion filters to tests/CMakeLists.txt
- No Qt5 migration issues found in Group 9 CMakeLists.txt files

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-09-24 16:43:47 +00:00

320 lines
14 KiB
CMake

# CMakeLists.txt für Qt6-Migrationstests
# Diese Tests validieren BUILD_RTI Guards, Qt6-Kompatibilität und RTI-Integration
cmake_minimum_required(VERSION 3.16)
# Qt6 finden (wird vom Hauptprojekt gesetzt, aber sicherheitshalber hier auch)
if(QT6_GUI_AVAILABLE)
# Check if targets already exist from parent CMakeLists.txt
if(TARGET Qt6::Core AND TARGET Qt6::Gui AND TARGET Qt6::Widgets AND TARGET Qt6::Test)
# Already found by parent - use existing targets
elseif(NOT TARGET Qt6::Gui OR NOT TARGET Qt6::Widgets)
# Manual fallback: create imported targets when standard find fails due to OpenGL
if(NOT TARGET Qt6::Gui)
add_library(Qt6::Gui SHARED IMPORTED)
set_target_properties(Qt6::Gui PROPERTIES
IMPORTED_LOCATION "/usr/lib/x86_64-linux-gnu/libQt6Gui.so.6"
INTERFACE_INCLUDE_DIRECTORIES "/usr/include/x86_64-linux-gnu/qt6/QtGui;/usr/include/x86_64-linux-gnu/qt6"
)
endif()
if(NOT TARGET Qt6::Widgets)
add_library(Qt6::Widgets SHARED IMPORTED)
set_target_properties(Qt6::Widgets PROPERTIES
IMPORTED_LOCATION "/usr/lib/x86_64-linux-gnu/libQt6Widgets.so.6"
INTERFACE_INCLUDE_DIRECTORIES "/usr/include/x86_64-linux-gnu/qt6/QtWidgets;/usr/include/x86_64-linux-gnu/qt6"
INTERFACE_LINK_LIBRARIES "Qt6::Gui;Qt6::Core"
)
endif()
else()
# Try standard find_package first, fall back to manual targets if OpenGL missing
find_package(Qt6 QUIET COMPONENTS Core Gui Widgets Test)
endif()
# Ensure Core and Test are found
if(NOT TARGET Qt6::Core)
find_package(Qt6 REQUIRED COMPONENTS Core Test)
endif()
else()
if(NOT TARGET Qt6::Core OR NOT TARGET Qt6::Test)
find_package(Qt6 REQUIRED COMPONENTS Core Test)
endif()
endif()
# Nur bauen wenn BUILD_TESTING aktiviert ist
if(BUILD_TESTING)
# Try to find system-wide GTest first, fallback to FetchContent
find_package(GTest QUIET)
if(NOT TARGET GTest::gtest_main)
include(FetchContent)
FetchContent_Declare(
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG v1.13.0
)
# For Windows: Prevent overriding the parent project's compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)
endif()
# Collect all test source files dynamically
file(GLOB MIGRATION_TEST_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/test_*.cpp")
if(MIGRATION_TEST_SOURCES)
set(EXISTING_SOURCES ${MIGRATION_TEST_SOURCES})
# Exclude tests for non-existent or commented-out components
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_lts_app_descriptor_editor\\.cpp")
# Exclude Qt Test-based tests (conflict with gtest main())
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_lts_app_descriptor\\.cpp")
# Exclude Grantlee-related tests when BUILD_GRANTLEE is OFF
if(NOT BUILD_GRANTLEE)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_.*Grantlee.*\\.cpp")
message(STATUS "Migration tests: Grantlee support disabled (BUILD_GRANTLEE=OFF), excluded Grantlee tests")
endif()
# Exclude CodeGen tests when CodeGen targets aren't available (MIGRATE_MODULE restricts scope)
if(NOT TARGET codegen_base)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_StructBuilder\\.cpp")
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_SqlGenerator\\.cpp")
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_XmlReader\\.cpp")
message(STATUS "Migration tests: CodeGen targets not available, excluded CodeGen tests")
endif()
# Exclude LtsTimelineClassic tests when LtsTimelineClassic target isn't available
if(NOT TARGET LtsTimelineClassic)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_abstracttimelinemodel\\.cpp")
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_event\\.cpp")
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_eventdelegate\\.cpp")
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_eventgraphic\\.cpp")
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_eventlist\\.cpp")
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_eventtools\\.cpp")
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_item\\.cpp")
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_ltsclassicdatamodel\\.cpp")
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_ltsclassicfilterproxymodel\\.cpp")
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_passiveeventcontainer\\.cpp")
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_testtimelinemodel\\.cpp")
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_timelineheaderview\\.cpp")
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_timelineindicator\\.cpp")
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_timelineview\\.cpp")
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_timelinewidget\\.cpp")
message(STATUS "Migration tests: LtsTimelineClassic target not available, excluded LtsTimelineClassic tests")
endif()
# Exclude LTS Tools tests when corresponding targets aren't available
if(NOT TARGET DBAdministration)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_DBAdministration\\.cpp")
endif()
if(NOT TARGET DBOperatorSettingsRemover)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_DBOperatorSettingsRemover\\.cpp")
endif()
if(NOT TARGET DBUpdate)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_DBUpdate\\.cpp")
endif()
if(NOT TARGET DataSampleGenerator)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_DataSampleGenerator\\.cpp")
endif()
if(NOT TARGET DataSampleReceiver)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_DataSampleReceiver\\.cpp")
endif()
if(NOT TARGET DateTimeSyncer)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_DateTimeSyncer\\.cpp")
endif()
if(NOT TARGET DdsView)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_DdsView\\.cpp")
endif()
if(NOT TARGET DotMatrixDisplay)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_DotMatrixDisplay\\.cpp")
endif()
if(NOT TARGET LicenceEditor)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_LicenceEditor\\.cpp")
endif()
if(NOT TARGET LocalDomainFinder)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_LocalDomainFinder\\.cpp")
endif()
if(NOT TARGET LogViewer)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_LogViewer\\.cpp")
endif()
# Group 7 (A,B,C,E,I) exclusions
if(NOT TARGET AdlerWebSocketSimulator)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_AdlerWebSocketSimulator\\.cpp")
endif()
if(NOT TARGET AsmWorkstationCertifier)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_AsmWorkstationCertifier\\.cpp")
endif()
if(NOT TARGET CnrProxyTester)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_CnrProxyTester\\.cpp")
endif()
if(NOT TARGET ConfigX)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_ConfigX\\.cpp")
endif()
if(NOT TARGET EEMFakeServer)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_EEMFakeServer\\.cpp")
endif()
if(NOT TARGET egcuSimulator)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_egcuSimulator\\.cpp")
endif()
# Group 8 (J,M,N,P,Q) exclusions
if(NOT TARGET ParticipantDataGenerator)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_ParticipantDataGenerator\\.cpp")
endif()
if(NOT TARGET ProjectSettingsEditor)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_ProjectSettingsEditor\\.cpp")
endif()
if(NOT TARGET QLedLine)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_QLedLine\\.cpp")
endif()
if(NOT TARGET QLedMatrix)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_QLedMatrix\\.cpp")
endif()
# Group 9 (R,S,T,V,W) exclusions
if(NOT TARGET RestClientUi)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_RestClientUi\\.cpp")
endif()
if(NOT TARGET ScreenIdShow)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_ScreenIdShow\\.cpp")
endif()
if(NOT TARGET SerialToTcpConverter)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_SerialToTcpConverter\\.cpp")
endif()
if(NOT TARGET Splash)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_Splash\\.cpp")
endif()
if(NOT TARGET SqlBrowser)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_SqlBrowser\\.cpp")
endif()
if(NOT TARGET TextEditorTest)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_TextEditorTest\\.cpp")
endif()
if(NOT TARGET Times)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_Times\\.cpp")
endif()
if(NOT TARGET TopicDiscover)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_TopicDiscover\\.cpp")
endif()
if(NOT TARGET TrajectoryWidget)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_TrajectoryWidget\\.cpp")
endif()
if(NOT TARGET VapixConfig)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_VapixConfig\\.cpp")
endif()
if(NOT TARGET VideoImport)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_VideoImport\\.cpp")
endif()
if(NOT TARGET WlsRandomPositions)
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_WlsRandomPositions\\.cpp")
endif()
if(NOT EXISTING_SOURCES)
message(WARNING "No migration test sources found after filtering - skipping migration_tests target")
return()
endif()
add_executable(migration_tests ${EXISTING_SOURCES})
# Enable Qt Meta-Object Compiler for tests with Q_OBJECT
set_target_properties(migration_tests PROPERTIES AUTOMOC ON)
target_compile_features(migration_tests PRIVATE cxx_std_17)
target_include_directories(migration_tests PRIVATE
${CMAKE_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/include
${CMAKE_BINARY_DIR}/Lts
${CMAKE_BINARY_DIR}/Lts/Common
${CMAKE_BINARY_DIR}/Lts/Common/CodeGen
${CMAKE_BINARY_DIR}/Lts/Common/LtsTimeline
${CMAKE_SOURCE_DIR}/Lts/Common/LtsTimelineClassic
${CMAKE_BINARY_DIR}/Lts/Services
${CMAKE_SOURCE_DIR}/Z/src/NGLLogger
)
# Link against Qt6 components (Qt6::Test not needed - using gtest)
if(QT6_GUI_AVAILABLE)
target_link_libraries(migration_tests PRIVATE
Qt6::Core
Qt6::Gui
Qt6::Widgets
GTest::gtest_main
)
else()
target_link_libraries(migration_tests PRIVATE
Qt6::Core
GTest::gtest_main
)
endif()
# Link against Z-module libraries for integration tests
# These are the core NGL libraries migrated to Qt6
if(TARGET NGLLogger)
target_link_libraries(migration_tests PRIVATE NGLLogger)
endif()
if(TARGET ngltools)
target_link_libraries(migration_tests PRIVATE ngltools)
endif()
if(TARGET ngldb)
target_link_libraries(migration_tests PRIVATE ngldb)
endif()
if(TARGET nglsettings)
target_link_libraries(migration_tests PRIVATE nglsettings)
endif()
if(TARGET ngltranslator)
target_link_libraries(migration_tests PRIVATE ngltranslator)
endif()
if(TARGET nglcompression)
target_link_libraries(migration_tests PRIVATE nglcompression)
endif()
if(TARGET tcpserver)
target_link_libraries(migration_tests PRIVATE tcpserver)
endif()
if(TARGET nglapplication)
target_link_libraries(migration_tests PRIVATE nglapplication)
endif()
if(TARGET qtsingleapplication)
target_link_libraries(migration_tests PRIVATE qtsingleapplication)
endif()
if(TARGET wms_json_ds)
target_link_libraries(migration_tests PRIVATE wms_json_ds)
endif()
if(TARGET nglwidgets AND QT6_GUI_AVAILABLE)
target_link_libraries(migration_tests PRIVATE nglwidgets)
endif()
# Link against LtsTimelineClassic only if it exists (may not exist with MIGRATE_MODULE)
if(TARGET LtsTimelineClassic)
target_link_libraries(migration_tests PRIVATE LtsTimelineClassic)
add_dependencies(migration_tests LtsTimelineClassic)
else()
message(STATUS "LtsTimelineClassic target not available - skipping link (MIGRATE_MODULE may restrict scope)")
endif()
# Grantlee tests require BUILD_GRANTLEE=ON
if(BUILD_GRANTLEE)
target_link_libraries(migration_tests PRIVATE codegen_grantlee)
target_include_directories(migration_tests PRIVATE
${CMAKE_SOURCE_DIR}/Lts/Common/CodeGen
)
message(STATUS "Migration tests: Grantlee support enabled")
endif()
# RTI libraries if BUILD_RTI is ON
if(BUILD_RTI)
find_package(RTI QUIET)
if(RTI_FOUND)
target_include_directories(migration_tests PRIVATE ${RTI_INCLUDE_DIRS})
target_link_libraries(migration_tests PRIVATE ${RTI_LIBRARIES})
target_compile_definitions(migration_tests PRIVATE BUILD_RTI=1)
message(STATUS "RTI found: ${RTI_LIBRARIES}")
else()
message(STATUS "BUILD_RTI=ON but RTI not found - building tests without RTI")
endif()
endif()
# Register with CTest
include(GoogleTest)
gtest_discover_tests(migration_tests)
message(STATUS "Migration tests enabled: ${EXISTING_SOURCES}")
else()
message(WARNING "No migration test sources found in ${CMAKE_CURRENT_SOURCE_DIR}")
endif()
endif()