web-dev-qa-db-fra.com

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

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.

31
Tamsyn Michael

Ce n'est pas nécessairement spécifique à Unix/Linux, donc vous feriez probablement mieux 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'onglet Projects à 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 variable d'environnement QTDIR soit utilisée pour définir la version Qt. Par défaut, QtCreator définit ceci sur /usr/share/qt4 pour moi, donc le paramétrer sur le chemin équivalent (c'est-à-dire celui où se trouvent les fichiers de configuration) devrait faire la construction de qmake 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 .pro, mais si c'est le cas, il n'est pas documenté (comme avec beaucoup de variables qmake).

De plus, si vous voulez construire avec une version majeure spécifique, qmake est généralement simplement lié à un binaire pour la version principale par défaut. Les vrais fichiers binaires sont qmake-qt4, qmake-qt5 etc. Voir aussi man qtchooser et le qtX-default packages sur les systèmes basés sur Debian.

Mise à jour

Il y a un bogue avec qtchooser sur 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/117782 . Cela peut également affecter QtCreator.

16
Graeme

Cela m'a aidé à utiliser -qt=qt5 interrupteur ou QT_SELECT=qt5 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
13
pevik

Il y a meilleure méthode .

Si vous souhaitez rendre vos modifications permanentes, vous devez modifier le /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf fichier, 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érerais 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.conf vers 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.

4
vstepaniuk

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

Voici une citation deman 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.conf a 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 qmake sur l'exemple de mon système (Ubuntu 17.10 x64, Qt 5.10.1).

Créez le /etc/xdg/qtchooser ré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, qmake devrait utiliser la version Qt spécifiée.

2
vstepaniuk

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 peut ne pas être 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.conf et changez cette ligne:

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

Où vous changez qt5 vers la version que vous souhaitez. Vous pouvez utiliser la commande qtchooser -list-versions pour voir quelles versions sont installées sur votre machine.

2
Matt

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, exécutez à nouveau la troisième ligne.

2
inukaze
Sudo apt-get install qt5-default

Si tu veux qt5, pour qt4 utilisation:

Sudo apt-get install qt4-default

Dans (ma) configuration par défaut sur Fedora 23 ayant à la fois qt-3.3.8 et qt-4.8.5 environnements, il était également nécessaire d'ajouter le /usr/libxx/qt4/bin/ temporairement dans le répertoire PATH pour permettre aux packages cmake/qmake de 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.

0
Gunnar