Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/tests/CMakeLists.txt
T
torsten 950d669538 Qt6 Migration: BUILD_RTI guards und CMake fixes
- BUILD_RTI conditional compilation für RTI Connext DDS dependencies
- Namespace fixes in core_dtc.h (Core:: → DDS::Core::)
- CMakeLists.txt: BUILD_RTI option und conditional dependencies
- Handler minelayer: namespace closing mit BUILD_RTI guard
- Build erfolgreich mit BUILD_RTI=OFF validiert

Signed-off-by: Torsten Wierschin <torsten.wierschin@life-maps.com>
2026-08-21 18:37:18 +02:00

108 lines
4.4 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)
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Test)
# 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()
# Nur bauen wenn BUILD_TESTING aktiviert ist
if(BUILD_TESTING)
# 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})
add_executable(migration_tests ${EXISTING_SOURCES})
# Enable Qt Meta-Object Compiler for tests with Q_OBJECT
set_target_properties(migration_tests PROPERTIES AUTOMOC ON)
# Exclude tests for non-existent or commented-out components
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_lts_app_descriptor_editor\\.cpp")
target_compile_features(migration_tests PRIVATE cxx_std_23)
target_include_directories(migration_tests PRIVATE
${CMAKE_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/qt6-after/qt6-migrated-legatus
${CMAKE_SOURCE_DIR}/qt6-after/qt6-migrated-legatus/include
${CMAKE_SOURCE_DIR}/qt6-after/qt6-migrated-legatus/DDS
${CMAKE_BINARY_DIR}/Lts/Common
${CMAKE_BINARY_DIR}/Lts/Common/CodeGen
${CMAKE_BINARY_DIR}/Lts/Common/LtsTimeline
)
# Link against Qt6 components and LtsTimelineClassic (provides export header)
target_link_libraries(migration_tests PRIVATE
Qt6::Core
Qt6::Gui
Qt6::Widgets
Qt6::Test
GTest::gtest_main
LtsTimelineClassic
)
# Ensure LtsTimelineClassic is built before tests (generates export header)
add_dependencies(migration_tests LtsTimelineClassic)
# 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}/qt6-after/qt6-migrated-legatus/Lts/Common/CodeGen
)
message(STATUS "Migration tests: Grantlee support enabled")
else()
# Exclude Grantlee-related tests when BUILD_GRANTLEE is OFF
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_.*Grantlee.*\\.cpp")
message(STATUS "Migration tests: Grantlee support disabled (BUILD_GRANTLEE=OFF), excluded Grantlee tests")
# Re-create executable with filtered sources
if(EXISTING_SOURCES)
set_target_properties(migration_tests PROPERTIES
SOURCES "${EXISTING_SOURCES}"
)
else()
message(WARNING "No non-Grantlee migration tests found - skipping migration_tests target")
return()
endif()
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()