mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-08 02:53:25 -08:00
QtTest was not among the modules test targets could link, so the Qt model and signal contracts had no way to be verified from a test: QAbstractItemModelTester and QSignalSpy both live there. Add Test to _TEST_NEEDED in cmake/FindQtRuntime.cmake. That is the single place the union of test-only Qt modules is declared, so this is the only file that needs to change to make the module reachable from every test target. Nothing uses it yet. This lands the capability ahead of the model-layer tests that need it, so those can be added as tests alone rather than as test plus build-system plumbing.
90 lines
3.3 KiB
CMake
90 lines
3.3 KiB
CMake
# Find a compatible Qt version
|
|
# Inputs: WITH_SERVER, WITH_CLIENT, WITH_ORACLE
|
|
# Optional Input: QT6_DIR -- Hint as to where Qt6 lives on the system
|
|
# Output: COCKATRICE_QT_VERSION_NAME -- Example values: Qt6
|
|
# Output: SERVATRICE_QT_MODULES
|
|
# Output: COCKATRICE_QT_MODULES
|
|
# Output: ORACLE_QT_MODULES
|
|
# Output: TEST_QT_MODULES
|
|
|
|
set(REQUIRED_QT_COMPONENTS Core)
|
|
if(WITH_SERVER)
|
|
set(_SERVATRICE_NEEDED Network Sql WebSockets)
|
|
endif()
|
|
if(WITH_CLIENT)
|
|
set(_COCKATRICE_NEEDED
|
|
Concurrent
|
|
Gui
|
|
Multimedia
|
|
Network
|
|
PrintSupport
|
|
ShaderTools
|
|
Svg
|
|
WebSockets
|
|
Widgets
|
|
Xml
|
|
Quick
|
|
QuickWidgets
|
|
)
|
|
endif()
|
|
if(WITH_ORACLE)
|
|
set(_ORACLE_NEEDED Concurrent Network Svg Widgets Xml)
|
|
endif()
|
|
if(TEST)
|
|
# Union of Qt modules required across all test targets (independent of application targets).
|
|
# When adding a new test that needs additional Qt modules, add them here rather than in the test's CMakeLists.txt.
|
|
# Test is QtTest: it brings QAbstractItemModelTester and QSignalSpy, which are how the Qt model
|
|
# and signal contracts get verified without standing up a GUI.
|
|
set(_TEST_NEEDED Concurrent Network Svg Widgets Test)
|
|
endif()
|
|
|
|
set(REQUIRED_QT_COMPONENTS ${REQUIRED_QT_COMPONENTS} ${_SERVATRICE_NEEDED} ${_COCKATRICE_NEEDED} ${_ORACLE_NEEDED}
|
|
${_TEST_NEEDED}
|
|
)
|
|
list(REMOVE_DUPLICATES REQUIRED_QT_COMPONENTS)
|
|
|
|
# Linguist is now a component in Qt6 instead of an external package
|
|
find_package(
|
|
Qt6 6.4.2
|
|
COMPONENTS ${REQUIRED_QT_COMPONENTS} Linguist
|
|
QUIET HINTS ${Qt6_DIR}
|
|
)
|
|
if(NOT Qt6_FOUND)
|
|
message(FATAL_ERROR "No suitable version of Qt was found")
|
|
endif()
|
|
set(COCKATRICE_QT_VERSION_NAME Qt6)
|
|
|
|
list(FIND Qt6LinguistTools_TARGETS Qt6::lrelease QT6_LRELEASE_INDEX)
|
|
if(QT6_LRELEASE_INDEX EQUAL -1)
|
|
message(WARNING "Qt6 lrelease not found.")
|
|
endif()
|
|
|
|
list(FIND Qt6LinguistTools_TARGETS Qt6::lupdate QT6_LUPDATE_INDEX)
|
|
if(QT6_LUPDATE_INDEX EQUAL -1)
|
|
message(WARNING "Qt6 lupdate not found.")
|
|
endif()
|
|
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
|
|
# Establish Qt Plugins directory & Library directories
|
|
get_target_property(QT_LIBRARY_DIR ${COCKATRICE_QT_VERSION_NAME}::Core LOCATION)
|
|
get_filename_component(QT_LIBRARY_DIR ${QT_LIBRARY_DIR} DIRECTORY)
|
|
get_filename_component(QT_PLUGINS_DIR "${Qt6Core_DIR}/../../../${QT6_INSTALL_PLUGINS}" ABSOLUTE)
|
|
get_filename_component(QT_LIBRARY_DIR "${QT_LIBRARY_DIR}/../../.." ABSOLUTE)
|
|
if(UNIX AND APPLE)
|
|
# Mac needs a bit more help finding all necessary components
|
|
list(APPEND QT_LIBRARY_DIR "/usr/local/lib")
|
|
endif()
|
|
message(DEBUG "QT_PLUGINS_DIR = ${QT_PLUGINS_DIR}")
|
|
message(DEBUG "QT_LIBRARY_DIR = ${QT_LIBRARY_DIR}")
|
|
|
|
# Establish exports
|
|
string(REGEX REPLACE "([^;]+)" "${COCKATRICE_QT_VERSION_NAME}::\\1" SERVATRICE_QT_MODULES "${_SERVATRICE_NEEDED}")
|
|
string(REGEX REPLACE "([^;]+)" "${COCKATRICE_QT_VERSION_NAME}::\\1" COCKATRICE_QT_MODULES "${_COCKATRICE_NEEDED}")
|
|
string(REGEX REPLACE "([^;]+)" "${COCKATRICE_QT_VERSION_NAME}::\\1" ORACLE_QT_MODULES "${_ORACLE_NEEDED}")
|
|
string(REGEX REPLACE "([^;]+)" "${COCKATRICE_QT_VERSION_NAME}::\\1" TEST_QT_MODULES "${_TEST_NEEDED}")
|
|
|
|
# Core-only export (useful for headless libs)
|
|
set(QT_CORE_MODULE "${COCKATRICE_QT_VERSION_NAME}::Core")
|
|
|
|
message(STATUS "Found Qt ${${COCKATRICE_QT_VERSION_NAME}_VERSION} at: ${${COCKATRICE_QT_VERSION_NAME}_DIR}")
|