Ubuntu
Qt安裝在兩個地方;錯誤的優先
我的系統執行的是 Ubuntu 16.04 LTS。
我似乎在兩個地方安裝了 Qt。4.8.7安裝在我的主目錄中
/usr
,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 安裝在我的主目錄中是否正常?
**編輯:**這是一個問題的原因是 Qt Creator 忽略
CONFIG += c++14
並拒絕允許 C++14 語法,就像auto foo = [](const a, const b){return a<b;};
使用 Clang 3.7 編譯時一樣,它應該支持 C++14。qmake
僅從CONFIG += c++14
5.4 開始支持,因此我認為問題出在我的舊qmake
版本上。
Qt5 安裝在您的本地目錄中,因為您沒有以 root 或管理員身份安裝它。
無論您在何處設置路徑、.bashrc、.cshrc、.zshrc、.profile 等,系統文件都優先於您的文件。
修改您的 PATH,以便系統首先找到您的 QT5 本地副本。
export PATH=$USER/Qt:${PATH}
我找到了解決方案:
- 通過包管理器刪除 Qt4
- 通過包管理器安裝 Qt5
- 從主文件夾中刪除 Qt
- 使用 Clang 編譯時qtcreator仍然會忽略
CONFIG += C++14
(╯°□°)╯︵ ┻━┻- 編輯
usr/lib/x64_84-linux-gnu/qt5/mkspecs/features/c++14.prf
並註釋掉僅適用-std=c++1y
於 Clang 3.2 及更高版本的守衛(儘管只安裝了 Clang 3.7,但似乎正在應用)修改
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)