Темы блога относятся к программированию на языке С++
В основном для C++Qt (Qt5.1) и C++ Builder (RAD 2009 и RAD XE3)
В основном для C++Qt (Qt5.1) и C++ Builder (RAD 2009 и RAD XE3)
LibraryCollector - программа для сборки библиотек для переноса Qt-приложений
Содержание 1. Предназначение. 2. Как пользоваться LibraryCollector? 3. Теория или принципы работы LibraryCollector. 3. Настройка QtCreator для запуска LibraryCollector как внешней утилиты. 4. Js -сценарий 5. Ссылки.Блоги.Темы.Исходники. 1. Предназначение. Программа LibraryCollector предназначена для получения списка зависимостей. Под зависимостями имеются ввиду динамические библиотеки *.dll/*.so модули и плагины Qt используемые программой. LibraryCollector позволяет выполнить автоматическое копирование этих зависимостей/библиотек в указанную папку для последующего переноса программы на другой компьютер где не установлен Qt или последующего создания из них инсталятора. При копировании LibraryCollector учитывает иерархию папок расположения плагинов Qt. В принципе LibraryCollector это моя альтернатива windeployqt с тем отличием что сборка идет на основе анализа библиотек(модулей) уже запущенного процесса собираемой программы на машине на которой есть Qt (запущенной из QtCreator). 2. Как пользоваться LibraryCollector?
Вы можете менять и модифицировать js- cценарии для определения, группировки, копирования библиотек под себя. 3. Теория или принципы работы LibraryCollector. Библиотеки Qt5 условно можно разделить на:
И так LibraryCollector что бы определить все используемое анализирует Ваш процесс используя системные функции (Windows) и просматривая системные файлы (Linux), получая список подгруженных библиотек раскидывает их по группам. Для определения принадлежности библиотеки к группе модулей,плагинам и qml- библиотекам производится сравнение полных путей на предмет вложенности в QTDIR/bin, QTDIR/plugins, QTDIR/qml соответственно. Примечание: в js-сценарии для проверки вложенности используется utils.isSubPath() Другие группы как правило определяются регулярными выражениями. 4. Настройка QtCreator для запуска LibraryCollector как внешней утилиты. LibraryCollector можно запускать из QtCreator, для этого нужно лишь добавить его во внешние утилиты: Поля для заполнения: Программа: Код:
D:\LibraryCollector_deploy\LibraryCollector.exe Код:
%{CurrentProject:BuildPath} %{CurrentBuild:Name} %{CurrentProject:FileBaseName} %{CurrentProject:QT_HOST_BINS} Код:
D:\LibraryCollector_deploy Js - сценарий придает гибкости LibraryCollector и дает возможность изменить поведение сборки для определенных приложений. Скрипт должен содержать три функции которые будут вызываться в процессе работы LibraryCollector, и примерно должен выглядеть так:
update() и copy() вызываются при нажатии на соответствующие кнопки. Внутри скрипта доступны следующие глобальные объекты:
Ссылки: 1. Hard-coded пути в QtCore.dll 2. Qt 5.1 и корректный deployment в Windows 3. Запуск Qt приложений .exe вне Qt Creator Блоги: 1. Деплой Qt5 приложений в Windows. Скандалы, интриги, расследования. Темы: Windows: 1. Поиск окна 2. Захват кнопкой курсора как в Spy++ 3. Qt5 Перенос приложения на другой компьютер Linux: 1. Получить список загруженных библиотек конкретного процесса 2. Поиск окна под курсором 3. Копирование файла и его сим.линка (Linux) Исходники: Последняя версия: https://github.com/Avazart/LibraryCollector Готовая программа: (бинарники, сборка Win 32, MSVC2015) |
Всего комментариев 19
Комментарии
-
Запись от maria123252 размещена 23.03.2018 в 12:05 -
Запись от Avazart размещена 23.03.2018 в 13:38
Обновил(-а) Avazart 25.03.2018 в 14:20 -
Запись от Avazart размещена 07.04.2018 в 13:11 -
Запись от Avazart размещена 09.05.2018 в 00:41 -
Я пользуюсь данной программой и радуюсь
Запись от maria123252 размещена 25.05.2018 в 10:31 -
Запись от Avazart размещена 25.05.2018 в 14:52
Обновил(-а) Avazart 25.05.2018 в 15:00 -
Запись от maria123252 размещена 01.06.2018 в 14:39 -
Запись от Avazart размещена 01.06.2018 в 20:53 -
Запись от Avazart размещена 18.09.2018 в 13:19 -
Спасибо что вы есть. Поставил звездочку на гите даже
Запись от MoonRaiser размещена 07.11.2018 в 00:58 -
Запись от Avazart размещена 11.11.2018 в 15:37 -
Программа не работает с новыми компиляторами
Запись от Михаиллллл размещена 05.04.2020 в 11:53 -
Запись от Avazart размещена 06.04.2020 в 23:41 -
С 5.14.2 из коробки не работает.
Цитата:Process started.
Process crashed
Process finished.Запись от MoonRaiser размещена 11.05.2020 в 08:53 -
Запись от Avazart размещена 11.05.2020 в 11:33
Обновил(-а) Avazart 11.05.2020 в 11:34 -
Запись от Avazart размещена 26.05.2020 в 18:37
Обновил(-а) Avazart 01.06.2020 в 12:07 -
Запись от Avazart размещена 02.07.2020 в 15:50 -
собрал LibraryCollector, запустил, указал все папки. Нажимаю Run, получаю:
Process failed to start: Неверно задано имя папки.
Что не так?
ps Зачем писать такое GUI? Если есть неверно заданная папка и/или файл, почему бы не написать
"Process failed to start: Неверно задано имя папки QTDIR:"? Или "Process failed to start: Неверно задано имя папки name:"?Запись от juvf размещена 19.11.2020 в 08:33 -
Цитата:Process failed to start: Неверно задано имя папки.
Что не так?
Цитата:ps Зачем писать такое GUI? Если есть неверно заданная папка и/или файл, почему бы не написать
"Process failed to start: Неверно задано имя папки QTDIR:"? Или "Process failed to start: Неверно задано имя папки name:"?
Магии не бывает.
Есть программа и есть попытка её запуска через QProcess и есть ошибка которую но нам дает
(которая скорее всего получается от системы) если что-то идет не так.Запись от Avazart размещена 20.11.2020 в 19:34
Обновил(-а) Avazart 20.11.2020 в 21:01