Qtは2つの場所にインストールされています。間違った場所が優先されます。

Qtは2つの場所にインストールされています。間違った場所が優先されます。

私のシステムはUbuntu 16.04 LTSを実行しています。

Qtを2ヶ所に設置したようです。/usr4.8.7は私のホームディレクトリにインストールされ、5.5.1は当時合理的に見えた理由で私のホームディレクトリにインストールされました。

$ /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

Qt Creatorはホームディレクトリのバージョンを見て5.5.1を実行していると思いますが、qmakeビルド中に実行するとバージョン4.8.7を実行し、いくつかの問題が発生します。

これをどのように掃除しますか?また、私のホームディレクトリにQtをインストールするのは正常ですか?

編集する:この問題は、CONFIG += c++14たとえばauto foo = [](const a, const b){return a<b;};C++14 をサポートする必要がある Clang 3.7 でコンパイルすると、Qt Creator が C++14 構文を無視して受け入れないために発生します。qmake5.4からのみサポートされているCONFIG += c++14ので、以前のqmakeバージョンに問題があるようです。

答え1

Qt5はrootまたは管理者としてインストールされていないため、ローカルディレクトリにインストールされます。

.bashrc、.cshrc、.zshrc、.profileなど、パスを設定するかどうかに関係なく、システムファイルはファイルよりも優先されます。

システムが QT5 のローカル・コピーを最初に見つけるように PATH を変更します。

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

答え2

解決策が見つかりました。

  • パッケージマネージャからQt4を削除する
  • パッケージマネージャによるQt5のインストール
  • ホームフォルダからQtを削除する
  • QtクリエイターまだCONFIG += C++14Clangでコンパイルするとき(╯°□°)╯︵┻⁄┻無視
  • Clang 3.2以降にのみ適用されるガードを編集しusr/lib/x64_84-linux-gnu/qt5/mkspecs/features/c++14.prfて注釈を付けました(Clang 3.7のみをインストールしたにもかかわらず適用されるようです)。-std=c++1y

変更されたc++14.prfファイル:

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)

関連情報