Qt instalado em dois lugares; errado tem precedência

0

Meu sistema está executando o Ubuntu 16.04 LTS.

Parece que eu instalei o Qt em dois lugares. O 4.8.7 está instalado em /usr e o 5.5.1 está instalado no meu diretório inicial por razões que provavelmente pareciam sensatas na época.

$ /usr/bin/qmake -v
QMake version 2.01a
Using Qt version 4.8.7 in /usr/lib/x86_64-linux-gnu

$ ~/Qt/5.5/gcc_64/bin/qmake -v
QMake version 3.0
Using Qt version 5.5.1 in /home/jsd/Qt/5.5/gcc_64/lib

$ which qmake
/usr/bin/qmake

O Qt Creator vê a versão do diretório home e acha que está executando o 5.5.1, mas quando executa o qmake no processo de compilação, ele executa a versão 4.8.7 e pequenos incômodos seguem-se.

Como posso limpar isso? Além disso, é normal que o Qt seja instalado no meu diretório pessoal?

Editar: A razão pela qual isso foi um problema é que o Qt Creator estava ignorando CONFIG += c++14 e se recusando a permitir a sintaxe do C ++ 14 como auto foo = [](const a, const b){return a<b;}; ao compilar com o Clang 3.7, que deveria suportar C + +14. qmake suportou apenas CONFIG += c++14 desde 5.4, portanto, achei que o problema era a minha versão qmake antiga.

    
por Jack Deeth 06.12.2016 / 05:19

2 respostas

0

Eu encontrei a solução:

  • remova o Qt4 pelo gerenciador de pacotes
  • instale o Qt5 por meio do gerenciador de pacotes
  • excluir Qt da pasta inicial
  • qtcreator ainda ignora CONFIG += C++14 ao compilar com Clang (╯ ° □ °) ╯︵ ┻━┻
  • Edite usr/lib/x64_84-linux-gnu/qt5/mkspecs/features/c++14.prf e comente os guardas que pretendem aplicar apenas -std=c++1y ao Clang 3.2 e superior (que parecem estar aplicando apesar de ter apenas o Clang 3.7 instalado)

Arquivo c++14.prf modificado:

intel_icc {
    # ICC does not support C++14 yet
} else: clang {

#    # Clang has supported -std=c++1y since version 3.2
#    greaterThan(QT_CLANG_MAJOR_VERSION, 3)|greaterThan(QT_CLANG_MINOR_VERSION, 1): \

        QMAKE_CXXFLAGS_CXX11 = -std=c++14

#    # Unknown how long Apple Clang has supported -std=c++1y, but at least since XCode 5.0
#    greaterThan(QT_APPLE_CLANG_MAJOR_VERSION, 4): \
#        QMAKE_CXXFLAGS_CXX11 = -std=c++1y

} else: gcc {
    # GCC has supported -std=c++1y since 4.8
    greaterThan(QT_GCC_MAJOR_VERSION, 4)|greaterThan(QT_GCC_MINOR_VERSION, 7): \
        QMAKE_CXXFLAGS_CXX11 = -std=c++1y
}

# Delegate to c++11.prf
include(c++11.prf)
    
por 13.12.2016 / 06:10
0

O Qt5 foi instalado em seu diretório local porque você não o instalou como root ou admin.

onde quer que você defina seu caminho, .bashrc, .cshrc, .zshrc, .profile etc, os arquivos de sistema têm precedência sobre seus arquivos.

modifique seu PATH, para que o sistema encontre sua cópia local do QT5 primeiro.

export PATH=$USER/Qt:${PATH}

    
por 11.12.2016 / 05:34