mafulechka
mafulechka21. Februar 2020 05:03

Qt kann jetzt verschoben werden!

Seit Version 5.14.0 ist Qt roambar , d.h. Sie können Ihre Qt-Installation in ein anderes Verzeichnis verschieben, ohne die Funktionalität zu beeinträchtigen oder Plugins zu laden.


Was bedeutet das für mich?

Kommen wir zur Rolle des Qt Build Masters in einem Windows-Projekt. Sie sind derjenige, der alle Argumenteinstellungen auswendig kennt. Sie wissen, an welcher Optimierungsschraube Sie drehen und welche unnötigen Funktionen Sie ausschalten müssen.
Ihr Build von Qt ist perfekt auf das Projekt zugeschnitten, und Sie stellen eine ZIP-Datei mit der Qt-Installation zur Verfügung.

configure -prefix C:/Qt/5.12.6 ...more options...
jom
jom install
zip -r X:\shared_stuff\qt-5.12.6.zip C:\Qt\5.12.6

Dann extrahieren Ihre Teamkollegen das Archiv an denselben Ort und alles funktioniert hervorragend.
Jetzt muss Joe Developer aus irgendeinem Grund die Qt-Installation in ein anderes Laufwerk/Verzeichnis entpacken.
Qt funktioniert in diesem anderen Verzeichnis nicht. QMake wird nicht richtig funktionieren. Plugins können nicht geladen werden. Qt-Assets nicht gefunden.

Warum ist alles kaputt?

In der Vergangenheit hat die Qt-Konfiguration das Installationsverzeichnis in die ausführbare Datei qmake und die Qt5Core-Bibliothek eingebettet. Die Logik in QLibraryInfo versucht, Plugins, Assets und mkspecs unter einem fest codierten Präfix zu finden, das Sie immer mit dem Argument -prefix zur Konfiguration übergeben haben.

Funktioniert das Verschieben des Installationsverzeichnisses in Qt 5.14?

Oh ja! Beginnend mit Qt 5.14.0 kann das Installationspräfix automatisch durch den Speicherort der Qt5Core-Bibliothek oder der ausführbaren Datei selbst bestimmt werden, ohne fest codierte Pfade zu verwenden.
Dieser Automatismus wird zum Zeitpunkt der Konfiguration von Qt über die Move-Funktion gesteuert.
Diese Funktion ist standardmäßig für nicht statische Builds von Qt aktiviert.
Wenn Sie eine verschiebbare statische Baugruppe benötigen, aktivieren Sie diese Funktion manuell:

onfigure -static -feature-relocatable ...

Der Vorbehalt bei verschiebbaren statischen Assemblys besteht darin, dass die internen Übersetzungen von Qt nicht automatisch gehandhabt werden.
Sie müssen die Qt-Übersetzungsdateien zusammen mit Ihrer Anwendung bereitstellen.
Dieser Unterschied zu einer nicht verschiebbaren Assembly ist der Grund, warum relocation für statische Assemblys standardmäßig deaktiviert ist.

Wenn es mir nicht gefällt, kann ich diese Funktion deaktivieren?

Natürlich kannst du.

configure -no-feature-relocatable ...

wird das alte Verhalten zurückgeben.
Beispielsweise benötigen Linux-Distributionen kein verschiebbares Qt und können diese Funktion deaktivieren.

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

Kommentare

Nur autorisierte Benutzer können Kommentare posten.
Bitte Anmelden oder Registrieren
Letzte Kommentare
ИМ
Игорь Максимов5. Oktober 2024 07:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 11:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr8. Februar 2024 18:43
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
EVA
EVA25. Dezember 2023 10:30
Boost - statisches Verknüpfen im CMake-Projekt unter Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
Jetzt im Forum diskutieren
J
JacobFib17. Oktober 2024 03:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 15:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27. September 2024 09:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 04:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken