Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: AkonResumed от Май 06, 2020, 12:19



Название: Перенос Qt5 в другой каталог
Отправлено: AkonResumed от Май 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.


Название: Re: Перенос Qt5 в другой каталог
Отправлено: kuzulis от Май 06, 2020, 13:41
ЕМНИП, надо патчить так или иначе саму qmake.


Название: Re: Перенос Qt5 в другой каталог
Отправлено: AkonResumed от Май 06, 2020, 15:18
qt.conf, а не qmake.conf! Я ошибся, извините.

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


Название: Re: Перенос Qt5 в другой каталог
Отправлено: Авварон от Май 06, 2020, 15:50
А чем решение с qt.conf не устраивает? Я пользуюсь, брат жив.


Название: Re: Перенос Qt5 в другой каталог
Отправлено: AkonResumed от Май 06, 2020, 17:29
Да это рабочий (и простой) вариант. Установил сейчас последний Креатор (4.12), так там тоже qt.conf используется. Просто можно было бы сразу без qt.conf, да и претят хардкодные абсолютные пути, уже не имеющие смысла после переноса.


Название: Re: Перенос Qt5 в другой каталог
Отправлено: AkonResumed от Ноябрь 13, 2020, 22:54
Вновь подниму вопрос. Как (какой тулзой или сам) Maintenance Tool патчит загруженные бинари после того, как распаковал их в каталог установки? Например, я имею в Qt5Core.dll, qmake.exe и ряде prl-файлов строку, содержащую путь установки.


Название: Re: Перенос Qt5 в другой каталог
Отправлено: AkonResumed от Ноябрь 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)?