| Родител: Porting Topics | Documentation Index |
Този документ описва процеса на портиране на QtRest библиотеката за Qt6 support в Daqster проекта.
QtRest е напълно съвместим с Qt6! Всички използвани Qt модули са налични и стабилни в Qt6.
## Find Qt libraries - support both Qt5 and Qt6
if(QT_VERSION_MAJOR EQUAL 6)
find_package(Qt6 REQUIRED COMPONENTS
Network
Core
Qml
)
set(QT_PREFIX Qt6)
else()
find_package(Qt5 5.3 COMPONENTS
Network
Core
Widgets
Gui
Qml
)
set(QT_PREFIX Qt5)
endif()
target_link_libraries(qtrest_lib
PUBLIC
${QT_PREFIX}::Core
${QT_PREFIX}::Network
${QT_PREFIX}::Qml
)
if(QT_VERSION_MAJOR EQUAL 5)
# Qt5 - изисква QuickControls2 за QtRest
if(QT_QUICKCONTROLS2_LIB AND NOT "${QT_QUICKCONTROLS2_LIB}" STREQUAL "")
add_subdirectory(src/external_libs/qtrest_lib)
message(STATUS "QtRest library enabled for Qt5 (QuickControls2 available)")
else()
message(STATUS "QtRest library disabled for Qt5 (QuickControls2 not available)")
endif()
else()
# Qt6 - изисква само QML за QtRest
if(QT_QML_LIB AND NOT "${QT_QML_LIB}" STREQUAL "")
add_subdirectory(src/external_libs/qtrest_lib)
message(STATUS "QtRest library enabled for Qt6 (QML available)")
else()
message(STATUS "QtRest library disabled for Qt6 (QML not available)")
endif()
endif()
if(QT_VERSION_MAJOR EQUAL 5)
# Qt5 - изисква QuickControls2 + QtRest library
if(QT_QUICKCONTROLS2_LIB AND NOT "${QT_QUICKCONTROLS2_LIB}" STREQUAL "" AND TARGET qtrest_lib)
add_subdirectory(QtCoinTrader)
message(STATUS "QtCoinTrader plugin enabled for Qt5 (QuickControls2 + QtRest library available)")
endif()
else()
# Qt6 - изисква само QML + QtRest library
if(QT_QML_LIB AND NOT "${QT_QML_LIB}" STREQUAL "" AND TARGET qtrest_lib)
add_subdirectory(QtCoinTrader)
message(STATUS "QtCoinTrader plugin enabled for Qt6 (QML + QtRest library available)")
endif()
endif()
./test_qt6_qtrest.sh
# Qt6 build
cmake -S . -B build_qt6 -DUSE_QT6=ON
cmake --build build_qt6 -j
# Проверка на резултатите
ls -la build_qt6/lib/libqtrest_lib.so
ls -la build_qt6/bin/plugins/libQtCoinTraderPlugin.so
| Компонент | Qt5 | Qt6 | Забележка |
|---|---|---|---|
| QtRest Library | QuickControls2 required | QML required | Qt6 е по-лесен |
| QtCoinTrader Plugin | QuickControls2 + QtRest | QML + QtRest | Qt6 е по-лесен |
| NodeEditor Plugin | Пълна поддръжка | Пълна поддръжка | QtCharts/QtMultimedia compatibility слой |
| Test Plugins | Всички | Всички | Без промени |
# Merge upstream changes
./tools/build_helpers/manage_upstream.sh merge qtrest
# Или cherry-pick specific commits
./tools/build_helpers/manage_upstream.sh cherry-pick <commit-hash>