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 при компиляции с Clang 3.7, который должен поддерживать C ++ 14. qmake поддерживал только CONFIG + = c ++ 14 , начиная с версии 5.4, поэтому я подумал, что проблема в моей старой версии qmake .

0
13.12.2016, 07:15
2 ответа

Qt5 был установлен в ваш локальный каталог, потому что вы не установили его как root или admin.

Где бы вы ни указали свой путь, .bashrc, .cshrc, .zshrc, .profile и т. Д., Системные файлы имеют приоритет над вашими файлами.

измените ваш PATH, чтобы система сначала нашла вашу локальную копию QT5.

экспорт ПУТЬ = $ USER / Qt: $ {ПУТЬ}

1
28.01.2020, 04:49

Я нашел решение:

  • удалить Qt4 через диспетчер пакетов
  • установить Qt5 через диспетчер пакетов
  • удалить Qt из домашней папки
  • qtcreator по-прежнему игнорирует CONFIG + = C ++ 14 при компиляции с помощью Clang (╯ ° □ °) ╯︵ ┻━┻
  • Edit 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)
0
28.01.2020, 04:49

Теги

Похожие вопросы