Wie ändere ich, welche Qt-Version für qmake verwendet wird?

31

Ich bin der Meinung, dass es eine einfache Möglichkeit geben sollte, dies zu tun, aber mein googlefu schlägt fehl. Daher würde ich mich über einige Informationen darüber freuen, wie man bei der Ausführung von qmake die verwendete Qt-Version umstellt (oder sogar dauerhaft ändert). Wenn ich nach der Version frage, erhalte ich Folgendes:

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

Ich habe QtCreator installiert, bin mir aber nicht sicher, wohin ich von hier aus gehen soll.

Tamsyn Michael
quelle

Antworten:

16

Dies ist nicht unbedingt Unix / Linux-spezifisch, daher sollten Sie dies wahrscheinlich besser bei Stack Overflow nachfragen. Nichtsdestotrotz kann QtCreator in der Regel sehr gut alternative Qt-Installationen erkennen. Erstellen Sie einfach ein neues Projekt und schauen Sie unter der ProjectsRegisterkarte auf der linken Seite nach. Sie können dort verschiedene Build-Konfigurationen festlegen. Für jede Konfiguration sollte ein Dropdown-Feld vorhanden sein, aus dem Sie eine der verschiedenen installierten Versionen auswählen können.

Ansonsten scheint es, dass die QTDIRUmgebungsvariable verwendet wird, um die Qt-Version festzulegen. Standardmäßig stellt QtCreator dies /usr/share/qt4für mich ein. Wenn Sie also den entsprechenden Pfad angeben (dh den Pfad, in dem sich die Konfigurationsdateien befinden), sollte qmake mit einer anderen Version erstellt werden. Sie könnten mit etwas testen:

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

Es kann auch möglich sein, dies in der .proDatei festzulegen, aber wenn ja, ist es nicht dokumentiert (wie bei vielen qmakeVariablen).

Wenn Sie mit einer bestimmten Hauptversion qmakeerstellen möchten, ist diese normalerweise nur mit einer Binärdatei für die Standardhauptversion verknüpft. Die eigentlichen Binärdateien sind qmake-qt4, qmake-qt5usw. Siehe auch man qtchooserund die qtX-defaultPakete auf Debian - basierten Systemen.

Aktualisieren

Unter qtchooserUbuntu 13.04 und 13.10 gibt es einen Fehler , der sich auf die Art und Weise auszuwirken scheint, wie Qt-Anwendungen verschiedene Qt-Versionen erkennen. Weitere Informationen finden Sie unter https://bugs.launchpad.net/ubuntu/+source/qt4-x11/+bug/1177823 . Dies kann sich auch auf QtCreator auswirken.

Graeme
quelle
Vielen Dank! Ich musste qmake-qt4 anstelle des kahlen qmake verwenden - so einfach, aber ich konnte die benötigten Informationen einfach nicht finden. Vielen Dank!
Tamsyn Michael
@TamsynMichael - Ja, auf der Linux-Seite ist qmake in bin nur ein Symlink. Wenn Sie also so etwas wie Update-Alternativen zum Hin- und Herwechseln verwenden, ist dies möglicherweise ideal. Es gibt keine Update-Alternativen und Dinge wie die PyQt-Build-Skripte wollen sowieso einen direkten Verweis auf die Binärdatei - keinen Symlink.
RobotHumans
13

Es hat mir geholfen, -qt=qt5Schalter oder QT_SELECT=qt5Umgebungsvariable zu verwenden.

$ 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
quelle
Was ist mit den Neben- und Patchversionen? Wie können wir zum Beispiel explizit 5.9.4 oder 5.11 über 5.12 auswählen?
DavidJ
4

Es gibt eine bessere Methode .

Wenn Sie Ihre Änderungen dauerhaft /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.confspeichern möchten, müssen Sie die Datei ändern , zu der ein Symlink besteht ../../../../share/qtchooser/qt4-x86_64-linux-gnu.conf.

Hier ist ein Beispiel für mein System (Ubuntu 17.10 x64, Qt 5.10.1). Ich würde vorschlagen, sowohl die ursprüngliche Symlink-Datei als auch das Ziel beizubehalten (falls Sie die ursprüngliche Konfiguration wiederherstellen möchten). Erstellen Sie außerdem die neuen Dateien an den Standardpositionen (aus Gründen der Konsistenz). Also hier sind die Schritte:

Benennen Sie die Symlink-Datei um:

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

Erstellen Sie eine neue Zielkonfigurationsdatei (mit einem beliebigen Namen):

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

Diese Datei muss zwei Zeilen enthalten: Die erste Zeile ist der Pfad zu den Qt-Binärdateien (einschließlich qmake) und die zweite Zeile ist der Pfad zu den Qt-Bibliotheken (einschließlich .so-Dateien). In meinem Fall ist es das

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

Speichern Sie es und schließen Sie es. Erstellen Sie einen Symlink default.confzur neuen Konfigurationsdatei:

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

Überprüfen Sie Ihre Qt-Version:

qmake --version

Jetzt sollte immer die angegebene Version verwendet werden.

vstepaniuk
quelle
2

Unter einigen Distributionen wie Debian Jessie Stable können Sie Folgendes tun:

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

Und wählen Sie einfach die Version, die Sie benötigen, wenn Sie die Änderung erneut benötigen. Führen Sie einfach die dritte Zeile erneut aus.

inukaze
quelle
2

Viele der obigen Antworten werden funktionieren. Ich persönlich habe jedoch festgestellt, dass keines von ihnen dauerhaft ist. ZB kann ich diesen Befehl ausführen:

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

Wenn ich jedoch ein neues Terminal öffne und die Qt-Version überprüfe, wird die Standardversion wiederhergestellt. Wenn Sie mehrere Qt-Versionen installiert haben, ist die Standardversion möglicherweise nicht die gewünschte. Sie können feststellen, indem Sie diesen Befehl ausführen:

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

Die einzige Möglichkeit, Ihre Änderungen zu übernehmen, besteht darin, die Standardversion zu ändern. Bearbeiten /usr/lib/x86_64-linux-gnu/qtchooser/default.confund ändern Sie dazu diese Zeile:

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

Wo Sie qt5auf die gewünschte Version wechseln . Mit dem Befehl können Sie feststellen qtchooser -list-versions, welche Versionen auf Ihrem Computer installiert sind.

Matt
quelle
2

qmake( /usr/bin/qmake) ist eigentlich nur ein Symlink zu qtchooser( /usr/bin/qtchooser).

Hier ist ein Zitat aus 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.

Die Datei /etc/xdg/qtchooser/default.confhat eine höhere Priorität als /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf. Hier sind die Schritte zum Auswählen der Standard-Qt-Version für qmakeein Beispiel meines Systems (Ubuntu 17.10 x64, Qt 5.10.1).

Erstellen Sie das /etc/xdg/qtchooserVerzeichnis:

sudo mkdir /etc/xdg/qtchooser

Erstellen und bearbeiten Sie die Konfigurationsdatei:

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

Wie oben gesagt. Diese Datei muss zwei Zeilen enthalten: Die erste Zeile ist der Pfad zu den Qt-Binärdateien (einschließlich qmake) und die zweite Zeile ist der Pfad zu den Qt-Bibliotheken (einschließlich .so-Dateien). In meinem Fall wird es sein:

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

Speichern Sie es und schließen Sie es. Nun qmakesollte die angegebene Qt-Version verwendet werden.

vstepaniuk
quelle
Ein Symlink funktioniert auch: 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

Wenn Sie möchten qt5, zur qt4Verwendung:

sudo apt-get install qt4-default
JustProgrammingQuestions
quelle
+1, großartig und einfach, schade, diese Antwort war so niedrig auf der Seite
jpa
0

In (meinem) Standard-Setup auf Fedora 23 mit beiden qt-3.3.8und qt-4.8.5Umgebungen war es auch notwendig, das /usr/libxx/qt4/bin/Verzeichnis vorübergehend zum hinzuzufügen PATH, damit die cmake/ qmakePakete die richtige Version finden konnten. Dies war beim Erstellen des Codes erforderlich, nicht beim Ausführen der fertigen QT4-App.

Aus irgendeinem Grund war der QT3-Pfad dort bereits permanent und leider zu Beginn des installiert PATH, was die korrekte Funktion des QT-Versionsselektors verhinderte.

Gunnar
quelle