Comment changer la version de Qt utilisée pour qmake?

31

Je pense qu'il devrait y avoir un moyen simple de le faire, mais mon googlefu échoue, donc j'apprécierais vraiment quelques informations sur la façon de changer (ou même de changer définitivement) quelle version de Qt est utilisée lors de qmake. Si je demande quelle version j'obtiens:

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

J'ai installé QtCreator, mais je ne sais pas où aller à partir d'ici.

Tamsyn Michael
la source

Réponses:

16

Ce n'est pas nécessairement spécifique à Unix / Linux, il est donc préférable de le demander sur Stack Overflow. Néanmoins, QtCreator est généralement assez bon pour détecter les installations alternatives de Qt, il suffit de créer un nouveau projet et de regarder sous l' Projectsonglet à gauche. Vous pouvez y définir différentes configurations de build. Il devrait y avoir une liste déroulante pour sélectionner parmi les différentes versions installées pour chaque configuration.

Sinon, il semble que la QTDIRvariable d'environnement soit utilisée pour définir la version Qt. Par défaut, QtCreator le définit /usr/share/qt4pour moi, donc le définir sur le chemin équivalent (c'est-à-dire celui où se trouvent les fichiers de configuration) devrait faire qmake construire avec une version différente. Vous pouvez tester avec quelque chose comme:

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

Il peut également être possible de définir cela dans le .profichier, mais si c'est le cas, cela n'est pas documenté (comme avec beaucoup de qmakevariables).

De plus, si vous voulez construire avec une version majeure spécifique, il qmakeest généralement simplement lié à un binaire pour la version principale par défaut. Les vrais binaires sont qmake-qt4, qmake-qt5etc. Voir aussi man qtchooseret les qtX-defaultpaquets sur les systèmes basés sur Debian.

Mise à jour

Il y a un bug avec qtchoosersur Ubuntu 13.04 et 13.10 qui semble affecter la façon dont les applications Qt détectent différentes versions de Qt, voir https://bugs.launchpad.net/ubuntu/+source/qt4-x11/+bug/1177823 . Cela peut également affecter QtCreator.

Graeme
la source
Merci! J'avais besoin d'utiliser qmake-qt4 au lieu du qmake chauve - si facile, mais je n'ai tout simplement pas pu trouver les informations dont j'avais besoin. Merci!
Tamsyn Michael
@TamsynMichael - Oui, côté Linux, qmake dans bin n'est qu'un lien symbolique. Donc, si vous avez utilisé quelque chose comme des alternatives de mise à jour pour basculer, cela pourrait être idéal. Ce n'est pas dans les alternatives de mise à jour, et des choses comme les scripts de construction PyQt veulent de toute façon une référence directe au binaire - pas un lien symbolique.
RobotHumans
13

Cela m'a aidé à utiliser un -qt=qt5commutateur ou QT_SELECT=qt5une variable d'environnement.

$ 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
la source
Qu'en est-il des versions mineures et correctives? Comment pouvons-nous sélectionner 5.9.4 ou 5.11 plutôt que 5.12 explicitement, par exemple?
DavidJ
4

Il y a une meilleure méthode .

Si vous souhaitez rendre vos modifications permanentes, vous devez modifier le /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conffichier, qui est un lien symbolique vers ../../../../share/qtchooser/qt4-x86_64-linux-gnu.conf.

Voici un exemple pour mon système (Ubuntu 17.10 x64, Qt 5.10.1). Je suggère de conserver à la fois le fichier de lien symbolique d'origine et sa cible (au cas où vous voudriez récupérer la configuration d'origine). Et créez également les nouveaux fichiers dans les emplacements par défaut (par souci de cohérence). Voici donc les étapes:

Renommez le fichier de lien symbolique:

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

Créez un nouveau fichier de configuration cible (avec n'importe quel nom):

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

Ce fichier doit contenir deux lignes: la première ligne est le chemin d'accès aux binaires Qt (y compris qmake) et la seconde est le chemin d'accès aux bibliothèques Qt (y compris les fichiers .so). Dans mon cas c'est

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

Enregistrez-le et fermez-le. Créez un lien symbolique default.confvers le nouveau fichier de configuration:

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

Vérifiez votre version de Qt:

qmake --version

Maintenant, il doit toujours utiliser la version spécifiée.

vstepaniuk
la source
2

Sous certaines distributions comme Debian Jessie Stable, vous pouvez faire ce qui suit:

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

Et sélectionnez simplement la version dont vous avez besoin si vous avez besoin de changer à nouveau, relancez la troisième ligne.

inukaze
la source
2

Beaucoup des réponses ci-dessus fonctionneront. Cependant, j'ai personnellement constaté qu'aucun d'entre eux n'est persistant. Par exemple, je peux exécuter cette commande:

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

Mais si j'ouvre un nouveau terminal et vérifie la version de Qt, il reviendra à la valeur par défaut, et si vous avez plusieurs versions de Qt installées, la valeur par défaut n'est peut-être pas celle que vous souhaitez. Vous pouvez dire en exécutant cette commande:

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

La seule façon de coller vos modifications est de changer la version par défaut. Pour ce faire, modifiez /usr/lib/x86_64-linux-gnu/qtchooser/default.confet modifiez cette ligne:

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

Où vous passez qt5à la version que vous voulez. Vous pouvez utiliser la commande qtchooser -list-versionspour voir quelles versions sont installées sur votre ordinateur.

Mat
la source
2

qmake( /usr/bin/qmake) n'est en fait qu'un lien symbolique vers qtchooser( /usr/bin/qtchooser).

Voici une citation de 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.

Le fichier /etc/xdg/qtchooser/default.confa une priorité plus élevée que /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf. Voici les étapes pour choisir la version Qt par défaut pour un qmakeexemple de mon système (Ubuntu 17.10 x64, Qt 5.10.1).

Créez le /etc/xdg/qtchooserrépertoire:

sudo mkdir /etc/xdg/qtchooser

Créez et modifiez le fichier de configuration:

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

Comme dit ci-dessus. ce fichier doit contenir deux lignes: la première ligne est le chemin d'accès aux binaires Qt (y compris qmake) et la seconde est le chemin d'accès aux bibliothèques Qt (y compris les fichiers .so). Dans mon cas, ce sera:

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

Enregistrez-le et fermez. Maintenant, qmakedevrait utiliser la version Qt spécifiée.

vstepaniuk
la source
Un lien symbolique fonctionne également: 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

Si vous le souhaitez qt5, à qt4utiliser:

sudo apt-get install qt4-default
JustProgrammingQuestions
la source
+1, génial et simple, dommage que cette réponse soit si basse sur la page
jpa
0

Dans (ma) configuration par défaut sur Fedora 23 ayant les deux qt-3.3.8et les qt-4.8.5environnements, il était également nécessaire d'ajouter /usr/libxx/qt4/bin/temporairement le répertoire à PATHpour permettre aux packages cmake/ qmakede trouver la bonne version. Cela était nécessaire lors de la construction du code, pas lors de l'exécution de l'application QT4 terminée.

Pour une raison quelconque, le chemin QT3 y était déjà installé de façon permanente et malheureusement au début du PATH, ce qui empêchait le sélecteur de version QT de fonctionner correctement.

Gunnar
la source