MyTetra Share
Делитесь знаниями!
О, смотри-ка какое хорошее место. Дайте два!
LibraryCollector- программа для сборки библиотек для переноса Qt-приложений
04.03.2018
12:32
Автор: Avazart
Текстовые метки: qt, qt5, сборка, библиотеки, портабельное приложение, перенос, зависимости
Раздел: Компьютер - Программирование - Язык C++ - Библиотека Qt - Инсталляция Qt и сборка проектов

LibraryCollector- программа для сборки библиотек для переноса Qt-приложений

Запись от Avazart размещена 15.06.2014 в 15:13 


(альтернатива windeployqt )

Программа LibraryCollector предназначена для 
получения списка зависимостей.
Под зависимостями имеются ввиду 
динамические библиотеки *.dll/*.so модули и плагины Qt используемые программой. LibraryCollector позволяет выполнить автоматическое копирование этих зависимостей/библиотек в указанную папку для последующего переноса программы на другой компьютер где не установлен Qt или последующего создания из них инсталятора. При копировании LibraryCollector учитывает иерархию папок расположения плагинов Qt.

LibraryCollector 
ищет зависимости процесса программы в рантайме, т.е для получения зависимостей нужно запустить вашу программу из QtCreator и "натравить" на нее LibraryCollector. Если ваша программа использует плагины и/или qml, то на момент получения зависимостей (кнопка "Update")- в вашей программе они уже должны быть подгружены. Поэтому для того что бы получить полный список зависимостей(со всеми плагинами и qml) нужно сначала прогнать вашу программу по всему функционалу, а потом нажать кнопку "Update".

Примечание: Обычно плагины подгружаются при первом задействовании ф-ций которые их используют, например плагин sqlite при первом обращении к базе данных. 

Для работы LibraryCollector необходимо указать путь к вашей программе, это можно сделать явно указав в поле "name" путь либо используя "прицел" кнопку "+" напротив поля "name" указав на окно вашей программы.

Так же необходимо указать пути к папкам Qt где лежать библиотеки и плагины, что бы LibraryCollector знал откуда именно брать библиотеки и автоматически их отобразил в отдельной ветке дерева зависимостей.

В поле "to" указывается папка куда копировать программу и библиотеки.
В этом поле с помощью регулярки подменяются:

  • <ExeDir> - на путь к папке где лежит исполняемый файл программы
  • <BaseName> - на имя исполняемого файла без расширения.


LibraryCollector можно настроить на запуск из QtCreator с автоматическим "подхватыванием" путей из окружения QtCreator.

Настройка QtCreator (картинка недоступна)

Примечание: На картинке указано старое название программы. В указанные поля нужно ввести: Программа: - полный путь к LibraryCollector.exe Параметры: - строку из параметров:

%{CurrentProject:BuildPath} %{CurrentBuild:Name} %{CurrentProject:FileBaseName} %{CurrentProject:QT_HOST_BINS}

Из первых трех переменных/параметров склеивается путь к экзешнику собираемого проекта, четвертый параметр передает путь папке bin. Путь к папке plugins вычисляется на основе предположения что plugins расположена в той же папке что и bin Рабочий каталог: - полный путь к каталогу в котором лежит LibraryCollector.exe


Во вложениях прикреплены уже собранная 
(статически, под x32) программа, эта программа сможет работать только для x32 сборки Qt. Для работы с x64 нужно пересобирать LibraryCollector из исходников, исходники выложены на github и будут обновляться.

Видео демонстрация работы в Windows

https://www.youtube.com/watch?v=wnYEdi4799g&feature=youtu.be



Просьба отписываться в комментариях при обнаружении ошибок или возникновении пожеланий по улучшению программы/исходного кода

Альтернативный вариант реализации программы от 
CriDos https://github.com/CriDos/DLLCollector_recode

История правок



Блоги:

Деплой Qt5 приложений в Windows. Скандалы, интриги, расследования. 

Qt5 Перенос приложения на другой компьютер

Получить список загруженных библиотек конкретного процесса


Исходникиhttps://github.com/Avazart/LibraryCollector
Программа (статическая сборка под win x32) :

Вложения

LibraryCollector.zip (3.88 Мб, 169 просмотров)

Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования