Ubuntu

Qt安裝在兩個地方;錯誤的優先

  • December 13, 2016

我的系統執行的是 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++145.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)

引用自:https://unix.stackexchange.com/questions/328330