私のシステムはUbuntu 16.04 LTSを実行しています。
Qtを2ヶ所に設置したようです。/usr
4.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 構文を無視して受け入れないために発生します。qmake
5.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++14
Clangでコンパイルするとき(╯°□°)╯︵┻⁄┻無視 - 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)