Russian Qt Forum
Март 28, 2024, 19:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перенос Qt5 в другой каталог  (Прочитано 5095 раз)
AkonResumed
Чайник
*
Offline Offline

Сообщений: 81


Просмотр профиля
« : Май 06, 2020, 12:19 »

Имеем Qt, установленную в С:\Qt\5.12.3\msvc2017_64 (штатный инсталлятор). Требуется перенести ее в папку %USERNAME%\libs\Qt-5.12.3-win32-x64-msvc. Дополнительный вопрос - переменные среды (%USERNAME% в данном случае) получится задействовать для гибкости?

Раньше с Qt4 была тулза qpatch.exe. Она позволяла пропатчить прямо бинарные файлы на новый путь (не превосходящий по длине старого). Что теперь в Qt5?

Сам Qt-ный инсталлятор общие папки типа "Src", "Docs", "Examples",.. (все эти папки лежат вне директории Qt) патчит с помощью qmake.conf qt.conf. Меня интересует вариант с патчем бинарных файлов, а не с помощью qmake.conf.
« Последнее редактирование: Май 06, 2020, 15:19 от AkonResumed » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Май 06, 2020, 13:41 »

ЕМНИП, надо патчить так или иначе саму qmake.
Записан

ArchLinux x86_64 / Win10 64 bit
AkonResumed
Чайник
*
Offline Offline

Сообщений: 81


Просмотр профиля
« Ответ #2 : Май 06, 2020, 15:18 »

qt.conf, а не qmake.conf! Я ошибся, извините.

По другому - нужно менять содержимое источника, откуда берет данные QLibraryInfo, если верно помню. В ряду прочего, например, в самих бинарях (Qt5Core и т.п.) есть хардкорные абсолютные пути, вот это и нужно изменить на новое местоположение.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3257


Просмотр профиля
« Ответ #3 : Май 06, 2020, 15:50 »

А чем решение с qt.conf не устраивает? Я пользуюсь, брат жив.
Записан
AkonResumed
Чайник
*
Offline Offline

Сообщений: 81


Просмотр профиля
« Ответ #4 : Май 06, 2020, 17:29 »

Да это рабочий (и простой) вариант. Установил сейчас последний Креатор (4.12), так там тоже qt.conf используется. Просто можно было бы сразу без qt.conf, да и претят хардкодные абсолютные пути, уже не имеющие смысла после переноса.
Записан
AkonResumed
Чайник
*
Offline Offline

Сообщений: 81


Просмотр профиля
« Ответ #5 : Ноябрь 13, 2020, 22:54 »

Вновь подниму вопрос. Как (какой тулзой или сам) Maintenance Tool патчит загруженные бинари после того, как распаковал их в каталог установки? Например, я имею в Qt5Core.dll, qmake.exe и ряде prl-файлов строку, содержащую путь установки.
Записан
AkonResumed
Чайник
*
Offline Offline

Сообщений: 81


Просмотр профиля
« Ответ #6 : Ноябрь 14, 2020, 23:57 »

Вобщем, слегка проработал тему:

1. Изменить харкордные пути можно через Qt Installer Framework. Maintenance Tool как раз оттуда. Там скриптовые модули для кастомной обработки.

2. Спецом для Windows есть еще тулза windeployqt, она также должна уметь патчить.

Я все эти инструменты не использовал, ибо нужно разбираться.

3. Собственно, полагаю достаточным будет пропатчить вручную (всего то ~10 файлов).

4. Пермещение Qt, видимо, все же актуальная задача. И вот здесь https://github.com/lniccoli/qtrelocator  уже давно кто-то запилил консольную тулзу, сорцы которой выдранны из Qt-инсталлера. Она как раз только и делает, что патчит:
Код:
QtRelocator "E:\My New Location\Qt-v5.12.3-win32-x64-msvc2017" qt5
qmake она патчит не до конца.

Файлы, которые нужно было пропатчить в моем случае (Qt-v5.12.3-win32-x64-msvc2017):
bin:
2020-11-14  23:20         2,794,496 qmake.exe
2020-11-14  23:20         6,130,176 Qt5Core.dll
2020-11-14  23:20        14,041,088 Qt5Cored.dll
lib:
2020-11-14  23:20             1,424 Qt5AxBase.prl
2020-11-14  23:20             1,409 Qt5AxBased.prl
2020-11-14  23:20             1,499 Qt5AxContainer.prl
2020-11-14  23:20             1,485 Qt5AxContainerd.prl
2020-11-14  23:20             1,506 Qt5AxServer.prl
2020-11-14  23:20             1,492 Qt5AxServerd.prl
2020-11-14  23:20             1,382 Qt5PacketProtocol.prl
2020-11-14  23:20             1,365 Qt5PacketProtocold.prl
2020-11-14  23:20             1,425 Qt5QmlDebug.prl
2020-11-14  23:20             1,410 Qt5QmlDebugd.prl
2020-11-14  23:20             1,423 Qt5QmlDevTools.prl
2020-11-14  23:20             1,477 Qt5UiTools.prl
2020-11-14  23:20             1,465 Qt5UiToolsd.prl

Да, и начиная с Qt 5.14, Qt становится перемещаемой (-relocatable configure option, которая включена по умолчанию), т.е. она ищет плагины относительно QtCore, а не по хардкордным путям. Распространяемые бинари были собраны с этой опцией (кто скажет у кого >=5.14)?

« Последнее редактирование: Ноябрь 15, 2020, 09:11 от AkonResumed » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.059 секунд. Запросов: 23.