|
|||||||
Как переключать версию Qt в Linux, если используется Qt4 и Qt5?
Время создания: 29.05.2025 12:25
Текстовые метки: linux, debian, astra, qt, qt4, qt5, версия, переключить, выбрать, компиляция, сборка, qmake, qtchooser
Раздел: Компьютер - Программирование - Язык C++ (Си++) - Библиотека Qt - Инсталляция Qt и сборка проектов
Запись: xintrea/mytetra_syncro/master/base/17485107295288cgvlww/text.html на raw.github.com
|
|||||||
|
|||||||
В некоторых дистрибутивах Linux, например в Astra Linux 1.6, по-умолчанию ставится пакет qtchooser, который должен помогать в выборе версии Qt, с которой происходит сборка Qt-программы из исходников. Признаком того, что выбор Qt в системе происходит через qtchooser является тот факт, что утилита qmake представляет собой ссылку на qtchooser: > whereis qmake qmake: /usr/bin/qmake > ls /usr/bin/qmake -la lrwxrwxrwx 1 root root /usr/bin/qmake -> qtchooser Узнать, какая версия Qt выбрана в данный момент, можно командой: > qtchooser -print-env QT_SELECT="qt5" QTTOOLDIR="/usr/lib/qt5/bin" QTLIBDIR="/usr/lib/x86_64-linux-gnu" Узнать, какие версии Qt видит в системе qtchooser, можно командой: > qtchooser -l 4 5 default qt4-x86_64-linux-gnu qt4 qt5-x86_64-linux-gnu qt5 Где qtchooser хранит свои настройки? Для своей работы программа qtchooser хранит *.conf - файлы в различных местах системы. Вот примерный список того, где могут находиться каталоги с файлами *.conf, в которых хранятся настройки версий Qt: ~/.config/qtchooser /etc/xdg/qtchoose /usr/share/qtchooser /usr/lib/x86_64-linux-gnu/qtchooser /usr/lib/x86_64-linux-gnu/qt-default/qtchooser Часто в системе создаются настройки в виде символьных ссылок на другие настройки: $ ls -la /usr/share/qtchooser -rw-r--r-- root root qt4-x86_64-linux-gnu.conf -rw-r--r-- root root qt5-x86_64-linux-gnu.conf $ ls -la /usr/lib/x86_64-linux-gnu/qtchooser lrwxrwxrwx root root 4.conf -> ../../../share/qtchooser/qt4-x86_64-linux-gnu.conf lrwxrwxrwx root root 5.conf -> ../../../share/qtchooser/qt5-x86_64-linux-gnu.conf lrwxrwxrwx root root default.conf -> ../../../share/qtchooser/qt5-x86_64-linux-gnu.conf lrwxrwxrwx root root qt4.conf -> ../../../share/qtchooser/qt4-x86_64-linux-gnu.conf lrwxrwxrwx root root qt5.conf -> ../../../share/qtchooser/qt5-x86_64-linux-gnu.conf Принцип следующий - имя файла, без расширения *.conf, считается названием конфигурации Qt. Название конфигурации указывается в переменной QT_SELECT, и согласно этому названию автоматически применяются настройки в момент вызова qmake (который на самом деле qtchooser). Согласно этому имени конфигурации, хранящемуся в QT_SELECT, утилита qtchooser печатает настройки через опцию -print-env, и делает другие вещи. Формат *.conf - файла для qtchooser следующий:
Сами имена переменных не указываются. Вот пример содержимого настроечного файла: > cat /usr/share/qtchooser/qt4-x86_64-linux-gnu.conf /usr/lib/x86_64-linux-gnu/qt4/bin /usr/lib/x86_64-linux-gnu Как временно в текущей сессии переключить версию Qt? Временно переключиться на версию Qt 4 можно командой: > export QT_SELECT=4 Проверка: > qtchooser -print-env QT_SELECT="4" QTTOOLDIR="/usr/lib/x86_64-linux-gnu/qt4/bin" QTLIBDIR="/usr/lib/x86_64-linux-gnu" > qmake --version QMake version 2.01a Using Qt version 4.8.7 in /usr/lib/x86_64-linux-gnu Временно переключиться на версию Qt 5 можно командой: > export QT_SELECT=5 Проверка: > qtchooser -print-env QT_SELECT="5" QTTOOLDIR="/usr/lib/qt5/bin" QTLIBDIR="/usr/lib/x86_64-linux-gnu" > qmake --version QMake version 3.1 Using Qt version 5.11.0 in /usr/lib/x86_64-linux-gnu Как переключить версию Qt на постоянной основе? Чтобы выбрать какая версия Qt будет доступна по-умолчанию, надо изменить конфигурацию с именем default. Если нужно глобально установить версию Qt, то следует создать линк: /etc/xdg/qtchooser/default.conf Который должен указывать на настроящий файл необходимой конфигурации. Созданный файл линка приоритетнее, чем файл с таким же именем, но в директории /usr/lib/x86_64-linux-gnu/qtchooser. Если версию Qt надо установить локально только для одного пользователя, то в домашнем каталоге пользователя следует создать линк: ~/.config/qtchooser/default.conf Который, все так же, должен указывать на настроящий файл необходимой конфигурации. Переключение версии Qt через пакетный менеджер В Astra Linux 1.6 имеется два специальных deb-пакета, которые просто перезаписывают файл /usr/lib/x86_64-linux-gnu/qtchooser/default.conf и являются взаимо-исключающими. После установки такого пакета, дефолтная настройка версии Qt устанавливается на соответвтующую пакету версию. Имена пакетов следующие:
Таким образом, если дать команду: apt-get install qt4-default То в системе по-умолчанию будет выставлен Qt4. Как переключить версию Qt в пределах одной команды? Для этого можно воспользоваться следующим вариантом запуска: qtchooser -qt=qt5 -run-tool=команда_и_её_параметры Выполняемую команду можно вводить с пробелами и без кавычек. Например, можно написать так: qtchooser -qt=qt5 -run-tool=qmake --version |
|||||||
Так же в этом разделе:
|
|||||||
![]() |
|||||||
|
|||||||
|