Qt는 두 위치에 설치되어 있습니다. 잘못된 위치가 우선 적용됩니다.

Qt는 두 위치에 설치되어 있습니다. 잘못된 위치가 우선 적용됩니다.

내 시스템은 Ubuntu 16.04 LTS를 실행하고 있습니다.

Qt를 두 곳에 설치한 것 같습니다. /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는 루트나 관리자로 설치하지 않았기 때문에 로컬 디렉터리에 설치됩니다.

.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)

관련 정보