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.
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.
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.
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
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.
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.
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.
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.
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.