Этот процесс довольно утомителен и отнимает много времени - но я подробно объясню каждый шаг здесь для блага других, пытающихся скомпилировать Qt в будущем.
Первым шагом является установка всех необходимых компонентов.
- ActivePerl , который используется в процессе настройки. Вам нужно будет перезагрузить компьютер после установки Perl, поскольку он изменяет переменные среды.
- Windows SDK 7.1 (ранее назывался Platform SDK). Обязательно включайте библиотеки x64 при выборе компонентов для установки.
Загрузите исходный архив Qt со страницы Загрузки Qt .
Извлеките содержимое архива в легко запоминаемое место (например, C:\
). Вам нужно запомнить это местоположение позже, так как мы будем использовать его для установки некоторых переменных среды.
Теперь откройте командную строку Windows SDK 7.1. Начнем с установки среды в режим 32-разрядного выпуска (нам нужно собрать некоторые инструменты в виде 32-разрядных приложений):
setenv /release /x86
Установите следующие переменные окружения (пример ниже предполагает, что вы извлекли значение C:\
):
set QTDIR=C:\qt-everywhere-opensource-src-4.8.0
set PATH=%PATH%;%QTDIR%\bin
Теперь запустите cd %QTDIR%
и укажите параметры конфигурации - пример приведен ниже:
configure -release -opensource -qt-zlib -qt-libpng -qt-libmng -qt-libtiff
-qt-libjpeg -qt-style-windowsxp -qt-style-windowsvista -platform
win32-msvc2010
После завершения процесса настройки cd
в каталог src
и запустить:
qmake
nmake
Этот процесс может занять значительное количество времени, поэтому сейчас самое время сделать перерыв и ответить на некоторые вопросы здесь о переполнении стека:)
Инструменты теперь собраны, и вам нужно скомпилировать Qt как 64-битную библиотеку. Введите следующую команду:
setenv /x64
Вам потребуется снова установить переменные среды, начиная с шага 5. Введите эти команды сейчас.
Запустите cd %QTDIR%
, а затем еще раз введите команду configure
, указав один дополнительный параметр :
configure -release -opensource -qt-zlib -qt-libpng -qt-libmng -qt-libtiff
-qt-libjpeg -qt-style-windowsxp -qt-style-windowsvista -platform
win32-msvc2010 <b>-no-qmake</b>
Опция -no-qmake
очень важна - она указывает, что мы хотим пропустить компиляцию программы qmake.exe
, потому что мы хотим сохранить 32-битную версию.
Теперь все становится действительно сложным из-за некоторых проблем с зависимостями. Инструменты (например, moc
), которые необходимы Qt для сборки базовой библиотеки и некоторых других компонентов, перечислены в виде зависимостей в файле src.pro
. Это означает, что компилятор попытается построить их как 64-битные приложения, а затем попытается запустить их, что, конечно, приведет к сбою в 32-битной системе. Итак, нам нужно отредактировать src.pro
и удалить эти зависимости самостоятельно. Прокрутите вниз рядом с линией 85 и найдите строку, которая начинается с:
!wince*:!ordered:!symbian-abld:!symbian-sbsv2 {
Каждая последующая строка в разделе содержит список подзадач и их зависимостей. Теперь вы хотите удалить все зависимости, которые начинаются с src_tools_
. Например:
src_gui.depends = src_corelib src_tools_uic
становится:
src_gui.depends = src_corelib
Возможно, есть лучший способ сделать это, но я еще не понял:)
Теперь мы cd
снова попадаем в каталог src
и запускаем следующую команду
nmake sub-winmain sub-corelib sub-xml sub-network sub-sql sub-testlib
sub-gui sub-qt3support sub-activeqt sub-opengl sub-xmlpatterns sub-phonon
sub-multimedia sub-svg sub-script sub-declarative sub-webkit
sub-scripttools sub-plugins sub-imports
Это создает только библиотеки Qt и пропускает зависимости инструмента. Обратите внимание, что это также может занять значительное время.
Теперь у вас в папке lib
должны быть 64-битные библиотеки, с которыми вы можете ссылаться в своих 64-битных приложениях Qt.
Кроме того, вышеупомянутые опции будут создавать QNetwork4.dll без поддержки OpenSSL (вы не сможете получить доступ к сайтам через HTTPS - даже в QWebView).К счастью, это не так сложно исправить.Загрузите и соберите OpenSSL для Win64 и добавьте следующие параметры к команде на шаге № 9: