Qt安装在两个地方;错误的优先

Qt安装在两个地方;错误的优先

我的系统运行的是 Ubuntu 16.04 LTS。

我好像在两个地方安装了Qt。/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安装在我的主目录下正常吗?

编辑:出现此问题的原因是 Qt Creator 忽略CONFIG += c++14并拒绝允许 C++14 语法,例如auto foo = [](const a, const b){return a<b;};使用 Clang 3.7 进行编译时,它应该支持 C++14。qmake仅从 5.4 开始支持CONFIG += c++14,因此我认为问题出在我的旧qmake版本上。

答案1

Qt5 安装在您的本地目录中,因为您没有以 root 或 admin 身份安装它。

无论您设置路径、.bashrc、.cshrc、.zshrc、.profile 等,系统文件都优先于您的文件。

修改您的 PATH,以便系统首先找到您本地的 QT5 副本。

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

答案2

我找到了解决方案:

  • 通过包管理器删除 Qt4
  • 通过包管理器安装 Qt5
  • 从主文件夹中删除 Qt
  • qt创建者仍然CONFIG += C++14使用 Clang 编译时忽略(╯°□°)╯︵ ┻⁄┻
  • 编辑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)

相关内容