Як змінити, яка версія Qt використовується для qmake?


31

Я відчуваю, що повинен бути простий спосіб зробити це, але мій googlefu не вдається, тому я дуже вдячний деякою інформацією про те, як переключити (або навіть назавжди змінити), яка версія Qt використовується під час qmake. Якщо я запитаю, в якій версії я отримую наступну:

~ $ qmake --version
QMake version 3.0
Using Qt version 5.0.1 in /usr/lib/x86_64-linux-gnu

Я встановив QtCreator, але не знаю, куди подітись звідси.

Відповіді:


16

Це не обов'язково для Unix / Linux, тому ви, ймовірно, краще запитуєте це в Stack Overflow. Тим не менш, QtCreator, як правило, досить добре виявляє альтернативні встановлення Qt, просто створіть новий проект і подивіться під Projectsвкладку зліва. Ви можете встановити там різні конфігурації збірки. Потрібно мати спадне вікно для вибору з різних встановлених версій для кожної конфігурації.

В іншому випадку, здається, що QTDIRзмінна середовища використовується для встановлення версії Qt. За замовчуванням QtCreator встановлює це /usr/share/qt4для мене, тому встановлення його на еквівалентний шлях (тобто той, де знаходяться файли конфігурації), має змусити qmake будувати з іншою версією. Ви можете протестувати з чимось на зразок:

QTDIR=/usr/share/qtX qmake --version

Можливо, також можна встановити це у .proфайлі, але якщо так, то він недокументований (як при досить багато qmakeзмінних).

Крім того, якщо ви хочете побудувати з певною основною версією, qmakeзазвичай це просто посилання на бінарний файл для основної версії за замовчуванням. Справжні бінарні файли є qmake-qt4і qmake-qt5т. Д. Також дивіться man qtchooserі qtX-defaultпакети на базі систем Debian.

Оновлення

Існує помилка qtchooserна Ubuntu 13.04 та 13.10, яка, схоже, впливає на те, як додатки Qt виявляють різні версії Qt, див. Https://bugs.launchpad.net/ubuntu/+source/qt4-x11/+bug/1177823 . Це також може вплинути на QtCreator.


Спасибі! Мені потрібно було використовувати qmake-qt4 замість лисий qmake - так просто, але я просто не зміг знайти потрібну мені інформацію. Спасибі!
Тамсін Майкл

@TamsynMichael - Так, на linux стороні qmake в bin - це лише посилання. Отже, якщо ви використовували щось на зразок оновлення-альтернативи для перемикання вперед і назад, це може бути ідеальним. Це не в альтернативних варіантах оновлення, і такі речі, як сценарії побудови PyQt, так чи інакше хочуть мати пряме посилання на бінарне - а не на симпосилання.
RobotHumans

13

Це допомогло мені використовувати -qt=qt5перемикач або QT_SELECT=qt5змінну середовища.

$ qmake --version
QMake version 2.01a
Using Qt version 4.8.7 in /usr/lib/x86_64-linux-gnu

$ qmake -qt=qt5 --version
QMake version 3.0
Using Qt version 5.5.1 in /usr/lib/x86_64-linux-gnu

$ QT_SELECT=qt5 qmake --version
QMake version 3.0
Using Qt version 5.5.1 in /usr/lib/x86_64-linux-gnu

А як щодо другорядних версій та версій патча? Як ми можемо вибрати, наприклад, 5.9.4 або 5.11 за 5.12?
DavidJ

4

Є кращий метод .

Якщо ви хочете зробити свої зміни постійними, вам потрібно змінити /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.confфайл, який є символьним посиланням ../../../../share/qtchooser/qt4-x86_64-linux-gnu.conf.

Ось приклад для моєї системи (Ubuntu 17.10 x64, Qt 5.10.1). Я б запропонував зберегти як оригінальний файл symlink, так і його ціль на місці (якщо ви хочете відновити початкову конфігурацію). А також створюйте нові файли у місцях за замовчуванням (для послідовності). Отже ось такі кроки:

Перейменуйте файл символьного посилання:

sudo mv /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf_orig

Створіть новий цільовий конфігураційний файл (з будь-яким ім’ям):

gksudo gedit /usr/share/qtchooser/my_Qt_5.10.1_Desktop_gcc_x64.conf

Цей файл повинен містити два рядки: перший рядок - шлях до бінарних файлів Qt (включаючи qmake), а другий - шлях до бібліотек Qt (включаючи .so файли). У моєму випадку це так

<Qt_dir>/5.10.1/gcc_64/bin
<Qt_dir>/5.10.1/gcc_64/lib

Збережіть і закрийте. Створіть посилання default.confна новий файл конфігурації:

ln -s /usr/share/qtchooser/my_Qt_5.10.1_Destop_gcc_x64.conf /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf

Перевірте свою версію Qt:

qmake --version

Тепер він завжди повинен використовувати вказану версію.


2

У деяких дистрибутивах, як Debian Jessie Stable, ви можете зробити наступне:

sudo apt-get install -y qt4-qmake qt4-dev-tools
sudo update-alternatives --install "/usr/bin/qmake" "qmake" "/usr/bin/qmake-qt4" 40
sudo update-alternatives --config qmake

І просто виберіть потрібну вам версію, якщо вам потрібно змінити, просто запустіть ще раз третій рядок.


2

Багато з вищезазначених відповідей спрацюють. Однак я особисто виявив, що жоден з них не є стійким. Наприклад, я можу виконати цю команду:

$ QT_SELECT=qt5 qmake --version
QMake version 3.0
Using Qt version 5.2.1 in /usr/lib/x86_64-linux-gnu

Але якщо я відкрию новий термінал і перевіряю версію Qt, він повернеться до типового, і якщо у вас встановлено кілька версій Qt, за замовчуванням він може бути не потрібним. Ви можете сказати, виконавши цю команду:

$ qtchooser -print-env
QT_SELECT="default"
QTTOOLDIR=...
QTLIBDIR=...

Єдиний спосіб зробити свої зміни - змінити стандартну версію. Для цього відредагуйте /usr/lib/x86_64-linux-gnu/qtchooser/default.confта змініть цей рядок:

/usr/lib/x86_64-linux-gnu/qt5/bin

Де ви переходите qt5на будь-яку версію, яку хочете. За допомогою команди qtchooser -list-versionsможна переглянути, які версії встановлені на вашій машині.


2

qmake( /usr/bin/qmake) насправді є лише символьним посиланням на qtchooser( /usr/bin/qtchooser).

Ось цитата з man qtchooser:

FILES
       /etc/xdg/qtchooser/default.conf
              System-wide  configuration  files. Each has two lines, the first
              is the path to the binaries and the second is the path to the Qt
              libraries.  If  a default.conf is provided, the settings from it
              will be automatically used in case nothing else is selected.

       $HOME/.config/qtchooser/*.conf
              User configuration files.

Файл /etc/xdg/qtchooser/default.confмає більший пріоритет, ніж /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf. Ось етапи, як вибрати версію Qt за замовчуванням для qmakeприкладу моєї системи (Ubuntu 17.10 x64, Qt 5.10.1).

Створіть /etc/xdg/qtchooserкаталог:

sudo mkdir /etc/xdg/qtchooser

Створіть та відредагуйте файл конфігурації:

gksudo gedit /etc/xdg/qtchooser/default.conf

Як було сказано вище. цей файл повинен містити два рядки: перший рядок - шлях до бінарних файлів Qt (включаючи qmake), а другий - шлях до бібліотек Qt (включаючи .so файли). У моєму випадку це буде:

<Qt_dir>/5.10.1/gcc_64/bin
<Qt_dir>/5.10.1/gcc_64/lib

Збережіть і закрийте. Тепер qmakeслід використовувати вказану версію Qt.


Симпосилання також працює: sudo mkdir -p / etc / xdg / qtchooser && sudo ln -s /usr/share/qtchooser/qt5-x86_64-linux-gnu.conf /etc/xdg/qtchooser/default.conf
maharvey67

1
sudo apt-get install qt5-default

Якщо ви хочете qt5, для qt4використання:

sudo apt-get install qt4-default

+1, дивовижна та проста, занадто погана ця відповідь була настільки низькою на сторінці
jpa

0

У (моєму) налаштуваннях за замовчуванням на Fedora 23, що має обоє qt-3.3.8та qt-4.8.5оточення, необхідно було також /usr/libxx/qt4/bin/тимчасово додати каталог до, PATHщоб cmake/ qmakeпакунки могли знайти потрібну версію. Це було необхідно при складанні коду, а не при запуску готового додатка QT4.

Чомусь шлях QT3 вже встановлений там постійно та, на жаль, на початку програми PATH, що заважало селектору версій QT працювати належним чином.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.