Моя система работает под управлением 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
.
Qt5 был установлен в ваш локальный каталог, потому что вы не установили его как root или admin.
Где бы вы ни указали свой путь, .bashrc, .cshrc, .zshrc, .profile и т. Д., Системные файлы имеют приоритет над вашими файлами.
измените ваш PATH, чтобы система сначала нашла вашу локальную копию QT5.
экспорт ПУТЬ = $ USER / 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)