Как собрать Qt для Visual Studio 2010

138

Я изо всех сил пытался найти руководство, которое предоставляет стабильное решение для использования Qt с Visual Studio 2010, поэтому после сбора всей информации и некоторых проб и ошибок я хотел бы написать свое решение в виде руководства.

Проблема, или почему невозможно использовать готовые двоичные файлы?

Кажется, что использование двоичных файлов, созданных для Visual Studio 2008, может работать в некоторых особых случаях, но я обнаружил, что они не работают. В моем случае они скомпилировались нормально, но выдают ошибки времени выполнения, например:

проблема2

или при запуске из Visual Studio 2010:

проблема

Обновление : я нашел сообщение в блоге, в котором анализируется, почему это работает для одних людей, а для других - нет. Одним словом, это зависит от того, установлена ​​ли у вас Visual Studio 2008 на том же компьютере или нет. http://blog.paulnettleship.com/2010/11/11/troubleshooting-visual-studio-2010-and-qt-4-7-integration/

Самой важной вещью (которую я по глупости не понимал) был тот факт, что вы НЕ МОЖЕТЕ использовать скомпилированные библиотеки Visual Studio 2008 и dll (доступные на веб-странице Qt), если у вас не установлена ​​Visual Studio 2008. Причина в том, что загружаемый вами Qt SDK представляет собой отладочную сборку, которая зависит от VC9.0 DebugCRT, то есть для нее требуется установленная среда выполнения отладки Visual C ++ 2008, которая НЕ доступна в качестве распространяемого установщика. Единственный способ установить DebugCRT - это установить Visual Studio 2008 полностью.

zsero
источник
Спасибо за ваши усилия. Кроме того, было бы полезно объяснить, почему не следует использовать двоичные файлы VS 2008. Я разработал несколько прототипов тестовых проектов с ними и VS2010, не испытывая никаких проблем, но я помню, как кто-то упоминал о проблемах с развертыванием?
Ральф
Я добавил свой опыт в последний раздел. Обычно я находил в сети множество отчетов, в которых говорилось, что вы должны скомпилировать Qt, если хотите использовать его с VS2010. Есть одна страница, которая сообщает вам, что это может быть VS2008.
Hyperknot 09
Потрясающе, я уверен, что многие люди найдут это полезным :)
Ральф
Эй, вот что я получаю, когда это делаю nmake. Я использовал следующее , прежде чем пытаться построить: configure.exe -release -no-ltcg.
Mateen Ulhaq
2
Для справки в будущем вам может быть интересно узнать, что на сайте документации Qt есть инструкции по установке для компиляции из исходников .
Ephphatha

Ответы:

142

Прежде всего, очень важно понимать, что для использования Qt с Visual Studio 2010 невозможно использовать предварительно созданные двоичные файлы, которые были созданы для Visual Studio 2008 , но вы должны скомпилировать его из исходного кода.

Скачивание Qt

На https://www.qt.io/download/

Обновление 2017: последняя ветка Qt 4.x (Qt 4.8.6) имеет 2 предустановленных пакета, которые теперь находятся в разделе архива:

  1. http://download.qt.io/archive/qt/4.8/4.8.6/qt-opensource-windows-x86-vs2010-4.8.6.exe
  2. http://download.qt.io/archive/qt/4.8/4.8.6/qt-opensource-windows-x86-vs2008-4.8.6.exe

Вам не следует загружать Qt, щелкнув «Библиотеки Qt 4.8.6 для Windows (Visual Studio 2008, 218 МБ)» , а щелкнув ссылку «zip» над ним.

выбор ссылок

По этой ссылке вы получите большой zip-файл, например «qt-everywhere-opensource-src-4.8.6.zip» . Разархивируйте это в папку и сделайте его путь небольшим и красивым, например "E: \ Qt"

Командная строка Visual Studio

Теперь, когда у нас есть исходники, нам нужно собрать двоичные файлы. Для этого откройте Microsoft Visual Studio 2010\Visual Studio Tools\Visual Studio Command Prompt (2010)ссылку в меню «Пуск» или даже закрепите ее на панели задач (хорошая идея). Это специальная командная строка, в которой установлены все переменные для сборки с помощью инструментов Visual Studio 2010.

В командной строке перейдите к извлеченной папке Qt, используя старый способ DOS, что означает, что вам нужно изменить букву диска E:, ввести каталоги cd Qtи перечислить содержимое каталога по dir. Вы можете использовать клавишу табуляции, чтобы помочь вам с именами каталогов. Когда вы перейдете в правильный каталог, dirкоманда должна вернуть что-то вроде этого.

командная строка

Сборка Qt

Пришло время для настройки и сборки. Для настройки минималистичного Qt я использую следующие флаги с configure.exe. Просто скопируйте и вставьте его в командную строку. Посмотрите в справочном руководстве Qt, какой флаг использовать или не использовать.

configure.exe -release -no-webkit -no-phonon -no-phonon-backend -no-script -no-scripttools -no-qt3support -no-multimedia -no-ltcg

После configure.exeзавершения (для меня это заняло 10 минут) вам нужно будет начать процесс сборки. С указанными выше флажками это займет около 20-30 минут. Чтобы запустить его, просто введите:

nmake

Установка переменных окружения

В принципе, мы закончили. Все, что вам нужно сделать, это установить переменные среды ( QTDIRи PATH), которые сообщают программам, где искать Qt. Если вы работаете в Windows 7, вы можете использовать следующую команду, чтобы указать QTDIRсвой установочный каталог.

setx QTDIR e:\Qt

Для настройки PATHя настоятельно рекомендую использовать Path Editor . В редакторе путей

add the directory of Qt\bin to your PATH

(не имеет значения, находится ли он в системном или пользовательском пути)

Если вы предпочитаете использовать Control Panel\System\Environment Variables, вы также можете установить их там.

Надстройка Qt Visual Studio

Итак, после выхода из системы или перезапуска все демонстрационные приложения Qt должны запуститься правильно (я рекомендую взглянуть на bin \ qtdemo.exe ). Теперь вы можете загрузить и установить надстройку Visual Studio (qt-vs-addin-1.1.9.exe) со страницы загрузки Qt, она будет работать отлично.

добавить в

Приложение A: Официальные инструкции:

На официальном вики-сайте Qt есть страница под названием Qt 4.8 Установка Qt для Windows , но я обнаружил, что на ней отсутствует важная информация.

Ссылки

Форумы Qt DevNet
Рекомендуемые флаги для минималистичной сборки Qt
Создание Qt 4.5 с помощью Visual C ++ 2010
Как скомпилировать Qt как статический
Qt 4.8: Настроить параметры для Qt Без труда
отредактировать переменную среды PATH в
Windows - op111.net

zsero
источник
2
Это здорово, но я бы добавил -qt-sql-sqlite к флагам настройки, если вы не хотите иметь проблем с вашим специально созданным Qt Assistant. Похоже, ему нужен этот плагин для успешного чтения базы данных документации.
neuviemeporte
Отличный гид! Одно замечание - я пытался настроиться на день или два и в процессе добавил несколько переменных пути в mingw - они сломали nmake и должны были быть удалены, прежде чем все заработало.
Дэвид Холл
2
Еще одно замечание: инструменты VS отклоняют сборку QT, если в пути к папке, в которой расположены исходники QT, есть пробелы. По крайней мере, в моем случае.
Роман Круглов
10
Только один вопрос: почему Qt еще не предоставляет предварительно скомпилированный дистрибутив VS 2010?
Мэтт Монтэг
2
Просто чтобы сообщить вам, ребята. Ссылка в исходном посте больше не работает. Поиск по сайту Digia занимает некоторое время и обнаруживает, что надстройки там даже нет. Основная ссылка, по которой нужно
перейти
25

Qt V4.8.0 содержит предварительно созданные двоичные файлы для Visual Studio 2010, поэтому вам больше не нужно этого делать: http://qt.nokia.com/downloads/windows-cpp-vs2010

петрушка72
источник
2
parsley72 готовые двоичные файлы для Visual Studio 2010 полезны только в том случае, если вы планируете работать в 32-битном режиме отладки, в противном случае руководство, опубликованное zsero, очень полезно, особенно если кто-то хочет изменить параметры, касающиеся архитектуры.
Абсолютно! Но вопрос был задан еще до того, как были доступны готовые библиотеки, поэтому я даю людям знать, что теперь есть альтернатива.
parsley72
1

См. Ссылку ниже, и она может быть полезной 1) https://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Developers/Build_Instructions/Prerequisites/Qt#Windows_3 2) http://eecs.vanderbilt.edu /research/hmtl/wp/index.php/qt-vs/

user6303986
источник
Ссылка на потенциальное решение всегда приветствуется, но, пожалуйста, добавьте контекст вокруг ссылки, чтобы ваши друзья-пользователи имели некоторое представление о том, что это такое и почему. Всегда указывайте наиболее релевантную часть важной ссылки на случай, если целевой сайт недоступен или постоянно отключен. Учтите, что возможная причина того, почему и как удаляются некоторые ответы, - это просто ссылка на внешний сайт .
Максимилиан Аст,