Я пытаюсь собрать приложение C ++ для Windows, используя Qt.
Моя настройка:
Теперь, когда я #include и пытаюсь использовать std :: unique_ptr, он говорит мне, что он не определен, поэтому я посмотрел в заголовках VS2010 и увидел, что необходимо определить _HAS_CPP0X, поэтому я добавил его в .pro как DEFINES + = _HAS_CPP0X
Это все еще не имело никакого эффекта, поэтому я щелкнул Ctrl + по памяти #include только для того, чтобы найти ее, используя заголовок памяти из:
C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ VC \ include
Который действительно не имеет никакого std :: unique_ptr там!
Наверняка стоит посмотреть на:
C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ include?
Я подумал, что включу память через полный путь, но это все равно не удастся с ошибками в самом заголовке включенной памяти, связанном с такими вещами C ++ 11, как ссылки move и rvalue.
Итак, что я хотел бы знать, это:
Редактировать:
Решение этой проблемы очевидно: скачайте исходный код Qt5 и соберите его с помощью MinGW, и все будет готово (включая опцию C ++ 11 pro в принятом ответе).
Вы можете просто поставить:
CONFIG += c++11
в вашем .pro файле. Но обновление вашего компилятора до недавнего g++
или же clang
настоятельно рекомендуется.
Я использую QT Creator 2.6.0, поэтому при условии, что меню параметров не изменилось, если вы перейдете в Сервис> Параметры> Построить & Бежать а затем искать Составители На вкладке вы должны увидеть список автоматически обнаруженных компиляторов, включая Компилятор Microsoft Visual C ++ 10.0. Если нет, то его можно добавить вручную.
Что касается поддержки C ++ 11, если вы используете cmake и импортировали проект в QT Creator как таковой, вы можете добавить это в свой файл cmake: set (CMAKE_CXX_FLAGS «-std = c ++ 0x»)
Если вы используете qmake, то по руководство установить QMAKE_CXXFLAGS + = -std = c ++ 0x
Редактировать:
При этом Visual Studio 2010 (Visual C ++ 10.0) по умолчанию включает поддержку c ++ 11, хотя следует отметить, что это только подмножество, здесь вопрос.
НЕТ
Может ли Qt в Windows использовать функции C ++ 11, поддерживаемые Vs2010?
Вы должны получить Visual 2012 для этого.
Если нет, то я очень разочарован тем, что разработка кроссплатформенного приложения Qt 5 для Linux означает, что он не кроссплатформенный, поскольку его невозможно собрать для любых других платформ!
На Mac используйте компилятор XCode 4 CLang 2, а на любой платформе работает компилятор, основанный на GCC 4.7.