SNAP Урок 04. Работаем с деплоем для Qt приложений на основе снап пакета

snap

Всех приветствую на продолжении темы работы со snap пакетами. Очень часто бывает так, что разработчику требуется узнать все зависимости приложения. И это не просто узнать, имеет ли одна библиотека в зависимости другую.

А для того чтобы собрать снап пакет со всеми зависимостями, что очень важно. И сейчас я вам продемонстрирую работу интересного приложения под названием cqtdeployer. Принцип работы таков, что ему нужно скормить бинарник приложения и путь к каталогу с qml, а cqtdeployer соберет вам все его qt зависимости.

Данный проект есть на гите, но так как он уже собран и есть в снап пакете то нету смысла его с гита копировать.

  1. Установка (--classic данный ключ как я писал ранее говорит о том, что приложение имеет, как и deb пакет, доступ к системе)

    snap install cqtdeployer --classic

  2. Клонируем тестовый проект, с помощью которого получим его зависимости, и соберём свой снап пакет

    git clone https://github.com/QuasarApp/Console-QtDeployer.git 
        Console-QtDeployer/examples/TestQMLWidgets (заходим в каталог проекта)

  3. Собираем проект TestQMLWidgets.pro (или через консоль, или из Qt Creator)

  4. Теперь начинаем сбор всех зависимостей данного приложения

    cqtdeployer -bin ./build/TestQMLWidgets -qmake /path/to/your/qmake/bin/qmake -qmlDir ./ -targetDir ./distro

  5. cqtdeployer имя самого снап пакета (а далее скармливаем ему аргументы)

  6. -bin : после путь до бинарника программы
  7. -qmake : путь к qmake именно той версии, которой мы собирали данное приложение
  8. -qmlDir : путь куда складывать деплой. Если указать ./ то около бинарника проекта появится каталог с тем, что нам нужно
  9. -targetDir : имя каталога, куда складывать зависимости

После всех манипуляций выполняем команду для сборки снап пакета

snapcraft

и его установки

snap install cqtdeployerexample_0.1_amd64.snap --dangerous

Запуск снап пакета

cqtdeployerexample

Вот в принципе и всё. Теперь, если вы пишите ваши приложения на Qt, то без проблем сможете понять и получить все нужные либы и плагины. Всем спасибо и оставайтесь с нами.

Отдельную благодарность разработчику данного приложения. QuasarApp

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

По поводу установки

Разработчики snap отключили возможность устанавливать приложение в класическом режиме и из-за этого утилита может работать не правельно. до тех пор пока билд в snapstore не будет обновленн, можно использовать сборку из gitHub

CQDeployer обновился и работает корректно. теперь можно пользоватся сборкой с snap store

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
m
19 мая 2019 г. 1:49
mahhaki

Qt - Тест 001. Сигналы и слоты

  • Результат:78баллов,
  • Очки рейтинга2
S
17 мая 2019 г. 13:14
SunBro

Qt - Тест 001. Сигналы и слоты

  • Результат:42баллов,
  • Очки рейтинга-8
b
17 мая 2019 г. 4:18
banana

C++ - Тест 003. Условия и циклы

  • Результат:57баллов,
  • Очки рейтинга-2
Последние комментарии
21 мая 2019 г. 20:10
Дмитрий

Приветствую! Я думаю дойдёт и до этого, но пока изучать его у меня нет желания.
20 мая 2019 г. 19:20
Евгений Легоцкой

Добрый день! Вы не думали разместить репозиторий проекта на GitHub?
P.
18 мая 2019 г. 14:03
PELMYACH .

Спасибо большое! Вскоре буду разбираться!
18 мая 2019 г. 9:13
Евгений Легоцкой

Добрый день! Отнимать значение общего счётчика можно в деструкторе класса кнопки QDynamicButton::~QDynamicButton(){ ResID--;} При этом я бы ещё переустанавливал значения вс...
P.
14 мая 2019 г. 22:33
PELMYACH .

Здравствуйте!А не подскажите, как можно при удалении какой либо кнопки, у щётчика отнять значение?Дабы например четвёртой кнопке соответствовал ID 4, а не 5 скажем
Сейчас обсуждают на форуме
24 мая 2019 г. 6:48
Евгений Легоцкой

Если там будут только перечисления внутри namespace, то жа, достаточно будет заголовочного файла
24 мая 2019 г. 6:28
Андрей Янкович

работает любой http сервер, и можно использовать обсалютно любой портпример <RemoteRepositories> <Repository> <Url>http://178.124.160.6:3030/A/B&l...;
23 мая 2019 г. 14:40
Михаиллл

Попробовал сделать этот запрос по http и получил json файл. request.setUrl(QUrl("https://jsonplaceholder.typicode.com/todos/1")); Как Вы думаете, почему https не работает и как это и...
23 мая 2019 г. 10:42
Михаиллл

Спасибо, помогло.
23 мая 2019 г. 6:31
Евгений Легоцкой

Для задач и граф-то не нужен. Достаточно будет таблицы в локальной базе данных SQLite, в которой указывается задача, время и т.д. В этом разделе есть примеры по работа с базой д...

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы

EVILEG
О нас
Услуги
Присоединяйтесь к нам
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB