162 lines
7.1 KiB
CMake
162 lines
7.1 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 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_ltsclassicdatamodel\\.cpp")
|
|
list(FILTER EXISTING_SOURCES EXCLUDE REGEX "test_ltsclassicfilterproxymodel\\.cpp")
|
|
message(STATUS "Migration tests: LtsTimelineClassic target not available, excluded LtsTimelineClassic tests")
|
|
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_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
|
|
${CMAKE_BINARY_DIR}/Lts/Common/LtsTimelineClassic
|
|
)
|
|
|
|
# Link against Qt6 components
|
|
if(QT6_GUI_AVAILABLE)
|
|
target_link_libraries(migration_tests PRIVATE
|
|
Qt6::Core
|
|
Qt6::Gui
|
|
Qt6::Widgets
|
|
Qt6::Test
|
|
GTest::gtest_main
|
|
)
|
|
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}/qt6-after/qt6-migrated-legatus/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() |