Как мне изменить, какая версия 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.

Обновить

В qtchooserUbuntu 13.04 и 13.10 есть ошибка, которая, похоже, влияет на то, как приложения Qt обнаруживают различные версии Qt, см. Https://bugs.launchpad.net/ubuntu/+source/qt4-x11/+bug/1177823 . Это также может повлиять на QtCreator.

Graeme
источник
Благодарность! Мне нужно было использовать 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
pevik
источник
А как насчет минорных и патч-версий? Например, как мы можем явно выбрать 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). Я бы посоветовал сохранить исходный файл символической ссылки и его цель (на случай, если вы хотите восстановить исходную конфигурацию). А также создайте новые файлы в местах по умолчанию (для согласованности). Итак, вот шаги:

Переименуйте файл символической ссылки:

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

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

vstepaniuk
источник
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

И просто выберите нужную версию, если вам нужно изменить снова, просто запустите третью строку.

inukaze
источник
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чтобы увидеть, какие версии установлены на вашем компьютере.

Matt
источник
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.

vstepaniuk
источник
Символическая ссылка также работает: Суд MkDir -p / и т.д. / XDG / qtchooser && Судо пер -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
JustProgrammingQuestions
источник
+1, круто и просто, очень плохо, этот ответ был так низок на странице
jpa
0

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

По какой-то причине путь QT3 уже был установлен там постоянно и, к сожалению, в начале PATH, что помешало правильной работе селектора версии QT.

Гуннар
источник