Подключение зависимостей
В данном разделе представлена информация о подключении библиотек и модулей Qt и QML из списка публичных API, включающая подключение необходимых зависимостей в .spec-файлы и подключение модулей и библиотек для систем сборки qmake и cmake. Также описаны необходимые разрешения в .desktop-файле и импорт функционала зависимостей в C++/QML-код при необходимости.
На данный момент в списках ниже представлены не все зависимости, их список будет пополняться.
Содержание:
C++ зависимости
С++ API
| C++ API | Зависимость для С++ в .spec | Подключение модуля в qmake | Подключение модуля в cmake | Разрешения в .desktop-файле | Импорт в C++ код |
|---|---|---|---|---|---|
| AmberPDF | BuildRequires: pkgconfig(amberpdf) |
CONFIG += link_pkgconfig PKGCONFIG += amberpdf |
- | - | Для разных классов импорт отличается. Полный список классов AmberPDF можно найти здесь |
| Libauroraapp | BuildRequires: pkgconfig(auroraapp) |
TARGET = <orgname>.<appname> CONFIG += link_pkgconfig PKGCONFIG += auroraapp |
include(FindPkgConfig) pkg_search_module(AURORA auroraapp REQUIRED) |
- | #include <auroraapp.h> |
| Notifications | BuildRequires: pkgconfig(nemonotifications-qt5) |
CONFIG += link_pkgconfig PKGCONFIG += nemonotifications-qt5 \ |
Подключить Qt D-Bus find_package(PkgConfig REQUIRED) pkg_search_module(NEMONOTIFICATIONS nemonotifications-qt5 REQUIRED) target_include_directories(${PROJECT_NAME} PRIVATE $<BUILD_INTERFACE: ${AURORA_INCLUDE_DIRS} ${NEMONOTIFICATIONS_INCLUDE_DIRS}>) target_link_libraries(${PROJECT_NAME} PRIVATE ${NEMONOTIFICATIONS_LIBRARIES} ${AURORA_LDFLAGS}) |
- | #include <notification.h> |
| Push Notifications | BuildRequires: pkgconfig(pushclient) >= 2.0.0 |
CONFIG += libauroraapp link_pkgconfig PKGCONFIG += pushclient |
- | PushNotifications |
#include <push_client.h> |
| MDM API, MDM Policy |
Provides: mdm-client Conflicts: mdm-client |
CONFIG += link_pkgconfig PKGCONFIG += sailfishpolicy sailfishmdm |
- | - | Для разных классов импорт отличается. Полный список классов MDM API можно найти здесь, для MDM Policy — тут. |
| QCA | BuildRequires: pkgconfig(qca2-qt5) |
- | pkg_check_modules(Qca2Qt5 qca2-qt5 IMPORTED_TARGET) target_link_libraries(${PROJECT_NAME} PkgConfig::Qca2Qt5 ${AURORA_LDFLAGS}) |
- | #include <QtCrypto> |
| WebView | - | Автоматически подключается при подключении libauroraapp или с помощью CONFIG += link_pkgconfig |
Автоматически подключается при подключении libauroraapp или с помощью CONFIG += link_pkgconfig |
Internet |
#include <WebEngine> #include <WebEngineSettings> |
C++ Модули Qt
| C++ API | Зависимость для С++ в .spec | Подключение модуля в qmake | Подключение модуля в cmake | Разрешения в .desktop-файле | Импорт в C++ код |
|---|---|---|---|---|---|
| Qt Concurrent | BuildRequires: pkgconfig(Qt5Concurrent) |
QT += concurrent |
find_package(Qt5 COMPONENTS Concurrent REQUIRED) target_link_libraries(TargetName Qt5::Concurrent ${AURORA_LDFLAGS}) |
- | - |
| Qt Core | BuildRequires: pkgconfig(Qt5Core) |
Подключается по умолчанию | find_package (Qt5 COMPONENTS Core REQUIRED) |
- | - |
| Qt D-Bus | BuildRequires: pkgconfig(Qt5DBus) |
QT +=dbus |
find_package (Qt5 COMPONENTS DBus REQUIRED) target_link_libraries(${PROJECT_NAME} Qt5::DBus ${AURORA_LDFLAGS}) |
- | - |
| Qt Gui | BuildRequires: pkgconfig(Qt5Gui) |
Подключается по умолчанию | find_package (Qt5 COMPONENTS Gui REQUIRED) target_link_libraries( TargetName Qt5::Gui ${AURORA_LDFLAGS}) |
- | - |
| Qt Positioning | Requires: qt5-qtpositioning Requires: qt5-qtdeclarative-import-positioning |
QT += positioning |
find_package (Qt5 COMPONENTS Positioning REQUIRED) target_link_libraries(TargetName Qt5::Positioning ${AURORA_LDFLAGS}) |
Location |
#include <QgeoCoordinate> и др. |
| Qt Location | BuildRequires: pkgconfig(Qt5Location), а также зависимости Qt Positioning |
QT += positioning location |
find_package(Qt5 COMPONENTS Location REQUIRED) target_link_libraries(TargetName Qt5::Location ${AURORA_LDFLAGS}) |
- | #include <QGeoRoute> и др. |
| Qt Multimedia | BuildRequires: pkgconfig(Qt5Multimedia) |
QT += multimedia |
find_package(Qt5 COMPONENTS Multimedia REQUIRED) target_link_libraries(TargetName Qt5::Multimedia ${AURORA_LDFLAGS}) |
Camera Microphone |
Различные заголовочные файлы для Qt-классов и импорты Qml-компонентов модуля |
| Qt Network | BuildRequires: pkgconfig(Qt5Network) |
QT += network |
find_package(Qt5 COMPONENTS Network REQUIRED) |
- | Различные заголовочные файлы для Qt-классов модуля |
| Qt Qml | BuildRequires: pkgconfig(Qt5Quick) |
Подключается по умолчанию | find_package (Qt5 COMPONENTS Qml REQUIRED) target_link_libraries(${PROJECT_NAME} Qt5::Qml ${AURORA_LDFLAGS}) |
- | - |
| Qt Quick | BuildRequires: pkgconfig(Qt5Quick) |
Подключается по умолчанию | find_package (Qt5 COMPONENTS Quick REQUIRED) target_link_libraries(${PROJECT_NAME} Qt5::Quick ${AURORA_LDFLAGS}) |
- | - |
| Qt Sensors | BuildRequires: pkgconfig(Qt5Sensors) |
QT += sensors |
find_package (Qt5 COMPONENTS Sensors REQUIRED) target_link_libraries(TargetName Qt5::Sensors ${AURORA_LDFLAGS}) |
Sensors |
- |
| Qt SQL | - | QT += sql |
find_package(Qt5 COMPONENTS Sql REQUIRED) target_link_libraries( TargetName Qt5::Sql ${AURORA_LDFLAGS}) |
- | - |
| Qt SVG | Requires: qt5-qtsvg BuildRequires: qt5-qtsvg-plugin-imageformat-svg BuildRequires: qt5-plugin-imageformat-gif BuildRequires: qt5-plugin-imageformat-ico BuildRequires: qt5-plugin-imageformat-jpeg |
QT += svg |
find_package(Qt5 COMPONENTS Svg REQUIRED) target_link_libraries(TargetName PRIVATE Qt5::Svg) |
- | Различные заголовочные файлы для Qt-классов модуля |
| Qt WebSockets | BuidRequires: qt5-qtwebsockets или BuildRequires: pkgconfig(Qt5WebSockets) Дополнительно необходимо установить в таргет qt5-qtwebsockets,qt5-qtwebsockets-devel и qt5-qtwebsockets-debuginfo |
QT += websockets |
find_package(Qt5 COMPONENTS WebSockets REQUIRED) target_link_libraries(TargetName Qt5::WebSockets ${AURORA_LDFLAGS})) |
Internet |
- |
| Qt XML, Qt XML Patterns | - | QT += xml QT += xmlpatterns |
find_package(Qt5 COMPONENTS Xml REQUIRED) target_link_libraries(TargetName PRIVATE Qt5::Xml) |
- | - |
QML зависимости
QML API
| QML API | Зависимость для QML в .spec | Подключение модуля в qmake | Подключение модуля в cmake | Разрешения в .desktop-файле | Импорт в QML-код |
|---|---|---|---|---|---|
| Configuration | - | - | - | - | import Nemo.Configuration 1.0 |
| D-Bus | Requires: nemo-qml-plugin-dbus-qt5 |
QT +=dbus |
find_package (Qt5 COMPONENTS DBus REQUIRED) target_link_libraries(${PROJECT_NAME} Qt5::DBus ${AURORA_LDFLAGS}) |
- | import Nemo.DBus 2.0 |
| KeepAlive | - | - | - | - | import Nemo.KeepAlive 1.2 |
| MDM Policy | Provides: mdm-client Conflicts: mdm-client |
CONFIG += link_pkgconfig PKGCONFIG += sailfishpolicy sailfishmdm |
- | - | import Sailfish.Policy 1.0 |
| Notifications | Requires: nemo-qml-plugin-notifications-qt5 |
- | - | - | import Nemo.Notifications 1.0 |
| Pickers | - | - | - | - | import Sailfish.Pickers 1.0 |
| QrFilter | Requires: qr-filter-qml-plugin >= 1.1.0 |
- | - | - | import Amber.QrFilter 1.0 |
| Qt.labs.folderlistmodel | Requires: qt5-qtdeclarative-import-folderlistmodel |
- | - | - | import Qt.labs.folderlistmodel 2.1 |
| Settings.Networking.VPN | Requires: libconnman-qt |
- | - | Профиль ключей подписи: extended |
import Sailfish.Settings.Networking.Vpn 1.0 |
| Silica | Requires: sailfishsilica-qt5 >= 0.10.9 |
- | - | - | import Sailfish.Silica 1.0 |
| Thumbnailer | Requires: nemo-qml-plugin-thumbnailer-qt5 |
- | - | - | import Nemo.Thumbnailer 1.0 |
| WebView | Requires: Sailfish-components-webview-qt5 Requires: sailfish-components-webview-qt5-pickers Requires: sailfish-components-webview-qt5-popups |
Автоматически подключается при подключении libauroraapp или с помощью CONFIG += link_pkgconfig |
Автоматически подключается при подключении libauroraapp |
Internet |
import Sailfish.WebView 1.0 import Sailfish.WebEngine 1.0 import Sailfish.WebView.Popups 1.0 |
QML Модули Qt
| QML API | Зависимость для QML в .spec | Подключение модуля в qmake | Подключение модуля в cmake | Разрешения в .desktop-файле | Импорт в QML-код |
|---|---|---|---|---|---|
| Qt Graphical Effects | - | - | - | - | import QtGraphicalEffects 1.0 |
| Qt Location | Requires: qt5-qtlocation Requires: qt5-qtdeclarative-import-location Requires: qt5-plugin-geoservices-osm Requires: qt5-plugin-geoservices-webtiles, а также зависимости Qt Positioning |
QT += positioning location |
find_package(Qt5 COMPONENTS Location REQUIRED) target_link_libraries(TargetName Qt5::Location ${AURORA_LDFLAGS}) |
- | import QtLocation 5.0 |
| Qt Positioning | Requires: qt5-qtpositioning Requires: qt5-qtdeclarative-import-positioning |
QT += positioning |
find_package (Qt5 COMPONENTS Positioning REQUIRED) target_link_libraries(TargetName Qt5::Positioning ${AURORA_LDFLAGS}) |
Location |
import QtPositioning 5.2 |
| Qt Multimedia | Requires: qt5-qtmultimedia Requires: qt5-qtdeclarative-import-multimedia Requires: qt5-qtmultimedia-plugin-mediaservice-gstmediacapture Requires: qt5-qtmultimedia-plugin-mediaservice-gstmediaplayer |
QT += multimedia |
find_package(Qt5 COMPONENTS Multimedia REQUIRED) target_link_libraries(TargetName Qt5::Multimedia ${AURORA_LDFLAGS}) |
Camera Microphone |
import QtMultimedia 5.0 - 5.6 |
| Qt Quick | Requires: qt5-qtdeclarative-import-xmllistmodel |
Подключается по умолчанию | find_package (Qt5 COMPONENTS Quick REQUIRED) target_link_libraries(${PROJECT_NAME} Qt5::Quick ${AURORA_LDFLAGS}) |
- | import QtQuick 2.0 – 2.6import QtQuick.Window 2.0 – 2.2import QtQuick.Layouts 1.1 – 1.2import QtQuick.XmlListModel 2.0 |
| Qt Qml | Requires: qtdeclarative-import-models2 |
Подключается по умолчанию | find_package (Qt5 COMPONENTS Qml REQUIRED) target_link_libraries(${PROJECT_NAME} Qt5::Qml ${AURORA_LDFLAGS}) |
- | - |
| Qt Sensors | Requires: qt5-qtdeclarative-import-sensors |
QT += sensors |
find_package (Qt5 COMPONENTS Sensors REQUIRED) target_link_libraries(TargetName Qt5::Sensors ${AURORA_LDFLAGS}) |
Sensors |
import QtSensors 5.0 - 5.2 |
| Qt WebSockets | Requires: qt5-qtdeclarative-import-websockets Дополнительно необходимо установить в таргет Requires: qt5-qtdeclarative-import-websockets |
QT += websockets |
find_package(Qt5 COMPONENTS WebSockets REQUIRED) target_link_libraries(TargetName Qt5::WebSockets ${AURORA_LDFLAGS})) |
Internet |
import QtWebSockets 1.0-1.1 |
D-Bus зависимости
D-Bus API
| D-Bus API | Зависимость для С++ в .spec | Зависимость для QML в .spec | Подключение модуля в qmake | Подключение модуля в cmake | Разрешения в .desktop-файле | Использование D-Bus интерфейсов |
|---|---|---|---|---|---|---|
| Authd D-Bus API | - | - | - | - | AuthService |
D-Bus интерфейсы описаны в документации Authd D-Bus API |
| NFCD | - | - | - | - | NFC |
D-Bus интерфейсы описаны в документации NFCD |
Прочие зависимости
| Зависимости | Зависимость для С++ в .spec | Зависимость для QML в .spec | Подключение модуля в qmake | Подключение модуля в cmake | Разрешения в .desktop-файле | Импорт в C++ код | Импорт в QML-код |
|---|---|---|---|---|---|---|---|
| curl | BuildRequires: curl |
- | - | - | - | #include <curl/curl.h> |
- |
libdbus-glib-1.so.2 libkeepalive-glib.so.1 libomplog.so.1 |
Для libdbus-glib-1.so.2 — BuildRequires: pkgconfig(dbus-glib-1).Для libkeepalive-glib.so.1 и libomplog.so.1 подключение аналогичное |
- | CONFIG += link_pkgconfig PKGCONFIG += dbus-glib-1 |
find_package(PkgConfig REQUIRED) pkg_search_module(DBUSGLIB dbus-glib-1 REQUIREDREQUIRED) target_include_directories(${PROJECT_NAME} PRIVATE $<BUILD_INTERFACE: ${AURORA_INCLUDE_DIRS} ${DBUSGLIB_INCLUDE_DIRS} >) |
Профиль ключей подписи: antivirus |
#include <dbus/dbus.h> #include <dbus/dbus-glib.h> |
- |
libpulse.so.0 libpulse-simple.so.0 libaudioresource.so.1 |
BuildRequires: qt5-qtmultimedia-plugin-audio-pulseaudio |
- | - | - | - | #include <pulse/pulseaudio.h> |
- |
| Nemo.FileManager 1.0 | - | Requires: nemo-qml-plugin-filemanager |
- | - | - | - | import Nemo.FileManager 1.0 |
| Python3 | BuildRequires: python3-gobject BuildRequires: python3-sqlite |
BuildRequires: pyotherside-qml-plugin-python3-qt5 |
- | - | - | - | import io.thp.pyotherside 1.0 – 1.5. Более подробно о разработке приложения на Python можно прочитать в официальной документации Sailfish OS |
| QtOpenGL | BuildRequires: pkgconfig(Qt5OpenGL) |
- | QT += opengl |
find_package (Qt5 COMPONENTS OpenGL REQUIRED) target_link_libraries(TargetName PRIVATE Qt5::OpenGL) |
- | Различные заголовочные файлы для Qt-классов модуля | - |
| QtQuick.Particles 2.0 | - | Requires: qt5-qtdeclarative-import-particles2 Requires: qt5-qtdeclarative-qtquickparticles |
- | - | - | - | import QtQuick.Particles 2.0 |
| Sailfish.TransferEngine 1.0 (deprecated) | - | - | - | - | - | - | import Sailfish.TransferEngine 1.0 |
| SDL2 | BuildRequires: SDL2-devel BuildRequires: SDL2_gfx-devel BuildRequires: SDL2_image-devel BuildRequires: SDL2_mixer-devel BuildRequires: SDL2_net-devel BuildRequires: SDL2_ttf-devel |
- | LIBS += -lSDL2 |
target_link_libraries(${PROJECT_NAME} PRIVATE ... -lSDL2) |
- | Заголовочные файлы в соответствии с SDL API. Например: #include <SDL2/SDL.h> |
- |
Примеры подключения
В качестве примеров ниже используется проект из шаблона. Для каждого примера указана используемая система сборки.
Также перед подключением зависимостей рекомендуем ознакомиться со следующими аспектами при работе с разными видами файлов:
- Преамбула .spec-файлов для работы с секциями.
- Подключение модулей Qt в .pro-файле.
- Список разрешений в .desktop-файлах для использования API в приложениях.
В результате корректного подключения должна произойти сборка проекта.
Подключение Qt D-Bus
В данном примере используется проект с системой сборки qmake.
-
Добавить в .spec-файл зависимости для сборки пакета:
BuildRequires: pkgconfig(Qt5DBus)
-
Добавить в .pro-файл модуль Qt для его использования во время сборки qmake:
QT +=dbus
-
В результате данный функционал станет доступным для импорта в .cpp-файл:
#include <QDBusConnection> #include <QDBusArgument>
Подключение Qt WebSockets
В данном примере используется проект с системой сборки qmake.
-
Установить необходимые пакеты в таргет. Детально процесс установки в таргет описан здесь.


-
Добавить в .spec-файл зависимости для сборки пакета:
Requires: qt5-qtdeclarative-import-websockets ... BuildRequires: pkgconfig(Qt5WebSockets)
-
Добавить в .pro-файл модуль Qt для его использования во время сборки qmake:
QT += websockets
-
Добавить необходимое разрешение для работы приложения в .desktop-файл:
[X-Application] Permissions=Internet ...
-
В результате данный функционал станет доступным для импорта в .qml-файл:
import QtWebSockets 1.1