Подтвердить что ты не робот

Как установить 64-битный Qt в Windows с поддержкой С++ 11?

IN A NUTSHELL:

  • У моей 64-битной сборки Qt нет поддержки на С++ 11.
  • Моя сборка Qt с С++ 11 - 32-разрядная.
  • Qt5 с помощью онлайн-установки 32-разрядный
  • Несмотря на то, что я посвятил последние 3 дня своей жизни этому, я не могу получить 64-битный Qt5 для сборки из источника.

Помощь! Что-то должно быть несовместимо в моей среде, но что это может быть?


Итак, мне нужно разработать 64-битные Qt-приложения с С++ 11 в Windows. Я нашел темы/руководства здесь, здесь, здесь, здесь и здесь, и ни одна из них не работает или не применяется, хотя я отмечаю, что второй из них позволяет мне создавать Qt 4.8.3 с поддержкой С++ 11 (но 32-разрядный). Третий выглядит сложнее, чем должен быть, а также предполагает создание с VS 2010, которое кажется частью проблемы, поэтому я не пробовал. Я также потратил много времени на создание предыдущих версий с разными компиляторами, такими как mingw и clang, поэтому я уверен, что cl - это то, что мне нужно использовать.

В принципе, я дошел до того, что могу построить Qt4.8.3 и выполнять 64-битные приложения из QtCreator 2.6.1, но я не могу получить полную поддержку на С++ 11. Он находит только cl из VS 10.0, который имеет очень ограниченную поддержку С++ 11. Выяснить, как заставить его использовать cl из VS 11.0, было бы одним из решений моей проблемы. Но когда я пытаюсь

QMAKE_CXX = C:/Программные файлы (x86)/Microsoft Visual Studio 11,0/VC/бен/мл

сбой сборки с jom Ошибка 2, и если я выберу вариант для построения с помощью nmake, я получаю аналогичную ошибку.

Qt 5 должен иметь полную поддержку С++ 11. Но когда я пытаюсь построить его сам из источника, он терпит неудачу. Причина этого заключается в том, что, несмотря на запуск configure/make из командной строки VS2012 x64 Cross Tools, укажите -platform win32-2012 на шаге настройки и указав QMAKE_COMPILER_DEFINES += _MSC_VER=1700 WIN32 в соответствии с  данное руководство, как в win32-msvc2010, так и в win32-msvc2012 mkspecs, он по-прежнему строит с cl из VS 2010 и вызывает некоторый конфликт. Вот моя команда configure:

configure -static -debug-and-release -confirm-license -opensource -nomake tests -nomake exampmles -opengl desktop -no-libjpeg -platform win32-msvc2012

И вот сбой компоновщика, когда я пытаюсь построить:

Here is the output from my build failure:

В конце 2-х абзацев вы можете увидеть, что msvc-2010 включен, а ранее на выходе консоли (не показано) в командах moc есть -D_MSC_VER=1600.

Итак, я в недоумении, может ли кто-нибудь помочь?

Изменить. Я заявлял, что строю 64-разрядные приложения с Qt5, на самом деле я могу построить 64-разрядные приложения (без поддержки С++ 11) со сборки of Qt 4.8.3. Если я попробую это с Qt5, я получу эту ошибку:

LNK1112: тип модуля модуля "X86" конфликтует с типом целевой машины 'X64'

Таким образом, это приводит к компиляции Qt5 в 64-битном режиме, который я не могу сделать.

4b9b3361

Ответ 1

Наконец, получилось "достаточно хорошее" решение, вернувшись и восстановив 4.8.3 в 64-битном режиме, на этот раз убедившись, что он был создан с поддержкой С++ 11. Поскольку решение с Qt5 является идеальным, я оставлю это открытым некоторое время, чтобы узнать, может ли кто-нибудь понять, как это сделать.

Важно отметить, что я успешно построил 64-битную версию С++ 11 4.8.3 из того же приглашения, которое я использовал, чтобы попытаться создать 5.0. Просто изменили каталоги. Такая же среда, все. И я также загрузил все дополнительные предварительные требования, необходимые для Qt5.

Ответ 3

Я нашел Qt 4.8.5 версию windows qt-win-opensource-4.8.5-vs2008.exe в https://download.qt.io/archive/qt/4.8/4.8.5/ для проектов VС++.