Come cambio la versione di Qt utilizzata per qmake?


31

Sento che dovrebbe esserci un modo semplice per farlo, ma il mio googlefu sta fallendo, quindi apprezzerei davvero alcune informazioni su come cambiare (o persino cambiare in modo permanente) quale versione di Qt viene utilizzata quando si fa qmake. Se chiedo quale versione ottengo il seguente:

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

Ho installato QtCreator, ma non sono sicuro di dove andare da qui.

Risposte:


16

Questo non è necessariamente specifico per Unix / Linux, quindi probabilmente è meglio chiedere questo su Stack Overflow. Nondimeno, QtCreator è in genere abbastanza bravo a rilevare installazioni Qt alternative, basta creare un nuovo progetto e guardare sotto la Projectsscheda a sinistra. È possibile impostare diverse configurazioni di build lì. Ci dovrebbe essere una casella a discesa per selezionare tra le varie versioni installate per ciascuna configurazione.

Altrimenti, sembra che la QTDIRvariabile ambientale sia usata per impostare la versione di Qt. Per impostazione predefinita, QtCreator lo imposta su /usr/share/qt4di me, quindi impostandolo sul percorso equivalente (cioè quello in cui si trovano i file di configurazione) dovrebbe far sì che qmake build con una versione diversa. Puoi provare con qualcosa del tipo:

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

Potrebbe anche essere possibile impostarlo nel .profile, ma in tal caso non è documentato (come con molte qmakevariabili).

Inoltre, se si desidera qmakecompilare con una versione principale specifica, di solito viene semplicemente collegato a un binario per la versione principale predefinita. I veri binari sono qmake-qt4, qmake-qt5ecc. Vedi anche man qtchooseri qtX-defaultpacchetti sui sistemi basati su Debian.

Aggiornare

C'è un bug con qtchoosersu Ubuntu 13.04 e 13.10 che sembrano influenzare il modo in cui le applicazioni Qt rilevano diverse versioni di Qt, vedi https://bugs.launchpad.net/ubuntu/+source/qt4-x11/+bug/1177823 . Ciò può influire anche su QtCreator.


Grazie! Avevo bisogno di usare qmake-qt4 invece del calvo qmake - così facile, ma non riuscivo a trovare le informazioni di cui avevo bisogno. Grazie!
Tamsyn Michael,

@TamsynMichael - Sì, sul lato Linux qmake in bin è solo un link simbolico. Quindi, se hai usato qualcosa come update-alternatives per passare avanti e indietro, potrebbe essere l'ideale. Non è nelle alternative di aggiornamento e cose come gli script di build di PyQt vogliono comunque un riferimento diretto al binario, non un link simbolico.
RobotHumans il

13

Mi ha aiutato a usare -qt=qt5switch o QT_SELECT=qt5variabile d'ambiente.

$ 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

Che dire delle versioni minori e patch? Come possiamo selezionare esplicitamente 5.9.4 o 5.11 su 5.12, ad esempio?
DavidJ

4

C'è un metodo migliore .

Se si desidera rendere permanenti le modifiche, è necessario modificare il /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conffile, che è un collegamento simbolico a ../../../../share/qtchooser/qt4-x86_64-linux-gnu.conf.

Ecco un esempio per il mio sistema (Ubuntu 17.10 x64, Qt 5.10.1). Suggerirei di mantenere sia il file symlink originale sia la sua destinazione (nel caso in cui si desideri ripristinare la configurazione originale). Inoltre, crea i nuovi file nelle posizioni predefinite (per coerenza). Quindi, ecco i passaggi:

Rinomina il file symlink:

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

Crea un nuovo file di configurazione di destinazione (con qualsiasi nome):

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

Questo file deve contenere due righe: la prima riga è il percorso dei binari Qt (incluso qmake) e la seconda è il percorso delle librerie Qt (inclusi i file .so). Nel mio caso lo è

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

Salvalo e chiudilo. Creare un collegamento simbolico default.confal nuovo file di configurazione:

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

Controlla la tua versione Qt:

qmake --version

Ora dovrebbe sempre usare la versione specificata.


2

In alcune distro come Debian Jessie Stable puoi fare quanto segue:

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

E basta selezionare la versione che ti serve se hai bisogno di cambiare di nuovo, esegui di nuovo la terza riga.


2

Molte delle risposte sopra funzioneranno. Tuttavia, ho scoperto personalmente che nessuno di loro è persistente. Ad esempio, posso eseguire questo comando:

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

Ma se apro un nuovo terminale e controllo la versione di Qt, tornerà al valore predefinito e se sono installate più versioni di Qt, il valore predefinito potrebbe non essere quello desiderato. Puoi dire eseguendo questo comando:

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

L'unico modo per applicare le modifiche è modificare la versione predefinita. Per fare ciò, modifica /usr/lib/x86_64-linux-gnu/qtchooser/default.confe cambia questa riga:

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

Dove passi qt5alla versione che desideri. Puoi usare il comando qtchooser -list-versionsper vedere quali versioni sono installate sul tuo computer.


2

qmake( /usr/bin/qmake) in realtà è solo un link simbolico a qtchooser( /usr/bin/qtchooser).

Ecco una citazione da 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.

Il file /etc/xdg/qtchooser/default.confha una priorità più alta di /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf. Ecco i passaggi su come scegliere la versione Qt predefinita per qmakead esempio sul mio sistema (Ubuntu 17.10 x64, Qt 5.10.1).

Crea la /etc/xdg/qtchooserdirectory:

sudo mkdir /etc/xdg/qtchooser

Crea e modifica il file di configurazione:

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

Come detto sopra. questo file deve contenere due righe: la prima riga è il percorso dei binari Qt (incluso qmake) e la seconda è il percorso delle librerie Qt (inclusi i file .so). Nel mio caso sarà:

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

Salvalo e chiudi. Ora qmakedovrebbe usare la versione Qt specificata.


Un link simbolico funziona anche: sudo mkdir -p / etc / xdg / qtchooser && sudo ln -s /usr/share/qtchooser/qt5-x86_64-linux-gnu.conf /etc/xdg/qtchooser/default.conf
maharvey67


0

Nella (mia) configurazione predefinita su Fedora 23 con entrambi qt-3.3.8e qt-4.8.5ambienti era anche necessario aggiungere /usr/libxx/qt4/bin/temporaneamente la directory a PATHper consentire ai pacchetti cmake/ qmakedi trovare la versione giusta. Ciò era necessario durante la creazione del codice, non durante l'esecuzione dell'app QT4 finita.

Per qualche motivo il percorso QT3 era già installato lì in modo permanente e sfortunatamente all'inizio del PATH, il che ha impedito al selettore della versione QT di funzionare correttamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.