Como altero qual versão do Qt é usada para qmake?

31

Eu sinto que deveria haver uma maneira simples de fazer isso, mas meu googlefu está falhando, então eu realmente aprecio algumas informações sobre como mudar (ou mesmo mudar permanentemente) qual versão do Qt é usada ao fazer o qmake. Se eu perguntar qual versão recebo o seguinte:

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

Instalei o QtCreator, mas não sei para onde ir a partir daqui.

Tamsyn Michael
fonte

Respostas:

16

Isso não é necessariamente específico para Unix / Linux, então você provavelmente deve perguntar isso no Stack Overflow. No entanto, o QtCreator geralmente é muito bom em detectar instalações alternativas do Qt, basta criar um novo projeto e olhar sob a Projectsguia à esquerda. Você pode definir diferentes configurações de compilação lá. Deve haver uma caixa suspensa para selecionar entre as várias versões instaladas para cada configuração.

Caso contrário, parece que a QTDIRvariável ambiental é usada para definir a versão Qt. Por padrão, o QtCreator define isso /usr/share/qt4para mim, portanto, defini-lo no caminho equivalente (ou seja, onde estão os arquivos de configuração) deve fazer o qmake construir com uma versão diferente. Você pode testar com algo como:

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

Também pode ser possível configurá-lo no .proarquivo, mas, se houver, não é documentado (como ocorre com muitas qmakevariáveis).

Além disso, se você deseja construir com uma versão principal específica, qmakegeralmente é apenas vinculado a um binário na versão principal padrão. Os binários são reais qmake-qt4, qmake-qt5etc. Também ver man qtchoosere os qtX-defaultpacotes em sistemas baseados no Debian.

Atualizar

Há um erro qtchooserno Ubuntu 13.04 e 13.10 que parece afetar a maneira como os aplicativos Qt detectam diferentes versões do Qt, consulte https://bugs.launchpad.net/ubuntu/+source/qt4-x11/+bug/1177823 . Isso pode afetar o QtCreator também.

Graeme
fonte
Obrigado! Eu precisava usar qmake-qt4 em vez do careca qmake - tão fácil, mas não consegui encontrar as informações necessárias. Obrigado!
Tamsyn Michael 22/02
@TamsynMichael - Sim, no lado linux, qmake in bin é apenas um link simbólico. Portanto, se você usou algo como alternativas de atualização para alternar entre si, isso pode ser o ideal. Não está nas alternativas de atualização, e coisas como os scripts de construção do PyQt querem uma referência direta ao binário de qualquer maneira - não um link simbólico.
precisa saber é o seguinte
13

Isso me ajudou a usar -qt=qt5switch ou QT_SELECT=qt5variável de 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
pevik
fonte
E as versões menor e de patch? Como podemos selecionar 5.9.4 ou 5.11 sobre 5.12 explicitamente, por exemplo?
DavidJ 28/03
4

Existe um método melhor .

Se você quiser tornar suas alterações permanentes, precisará modificar o /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.confarquivo, que é um link simbólico para ../../../../share/qtchooser/qt4-x86_64-linux-gnu.conf.

Aqui está um exemplo para o meu sistema (Ubuntu 17.10 x64, Qt 5.10.1). Eu sugeriria manter o arquivo de link simbólico original e seu destino no lugar (caso você queira recuperar a configuração original). E também crie os novos arquivos nos locais padrão (por consistência). Então, aqui estão as etapas:

Renomeie o arquivo de link simbólico:

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

Crie um novo arquivo de configuração de destino (com qualquer nome):

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

Este arquivo deve conter duas linhas: a primeira linha é o caminho para os binários Qt (incluindo qmake) e a segunda é o caminho para as bibliotecas Qt (incluindo arquivos .so). No meu caso é

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

Salve e feche. Crie um link simbólico default.confpara o novo arquivo de configuração:

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

Verifique sua versão do Qt:

qmake --version

Agora, ele deve sempre usar a versão especificada.

vstepaniuk
fonte
2

Sob algumas distros como o Debian Jessie Stable, você pode fazer o seguinte:

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 apenas selecione a versão que você precisa se precisar alterar novamente, apenas execute novamente a terceira linha.

inukaze
fonte
2

Muitas das respostas acima funcionarão. No entanto, eu pessoalmente descobri que nenhum deles é persistente. Por exemplo, eu posso executar este comando:

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

Mas se eu abrir um novo terminal e verificar a versão do Qt, ele voltará ao padrão, e se você tiver várias versões do Qt instaladas, o padrão pode não ser o desejado. Você pode dizer executando este comando:

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

A única maneira de fazer suas alterações se manterem é alterando a versão padrão. Para fazer isso, edite /usr/lib/x86_64-linux-gnu/qtchooser/default.confe altere esta linha:

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

Onde você muda qt5para a versão que desejar. Você pode usar o comando qtchooser -list-versionspara ver quais versões estão instaladas na sua máquina.

Matt
fonte
2

qmake( /usr/bin/qmake) na verdade é apenas um link simbólico para qtchooser( /usr/bin/qtchooser).

Aqui está uma citação 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.

O arquivo /etc/xdg/qtchooser/default.conftem prioridade mais alta que /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf. Aqui estão as etapas de como escolher a versão padrão do Qt qmakeno exemplo do meu sistema (Ubuntu 17.10 x64, Qt 5.10.1).

Crie o /etc/xdg/qtchooserdiretório:

sudo mkdir /etc/xdg/qtchooser

Crie e edite o arquivo de configuração:

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

Como dito acima. esse arquivo deve conter duas linhas: a primeira linha é o caminho para os binários Qt (incluindo qmake) e a segunda é o caminho para as bibliotecas Qt (incluindo arquivos .so). No meu caso, será:

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

Salve e feche. Agora qmakedeve usar a versão Qt especificada.

vstepaniuk
fonte
Um link simbólico também funciona: 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

Se desejar qt5, qt4use:

sudo apt-get install qt4-default
JustProgrammingQuestions
fonte
+1, impressionante e simples, pena que esta resposta foi tão baixa na página
jpa
0

Em (meu) configuração padrão no Fedora 23 tendo ambos qt-3.3.8e qt-4.8.5ambientes também era necessário para adicionar o /usr/libxx/qt4/bin/diretório temporariamente ao PATHpermitir que as cmake/ qmakeos pacotes para encontrar a versão correta. Isso foi necessário ao criar o código, não ao executar o aplicativo QT4 concluído.

Por alguma razão, o caminho QT3 já foi instalado lá permanentemente e infelizmente no início do PATH, o que impediu que o seletor de versão QT funcionasse corretamente.

Gunnar
fonte