(Описанная ниже последовательность сэкономит особенно новичкам массу нервов и времени. Сложно дойти до конца. Дело в том, что судя по всему описания в интернете попросту списаны друг у друга. Если уж пишите то пишите ВСЕ. Несколько дней потратил только на установку MSVC2017. Не то что бы это оказалось сложно. Оказалось сложно понять, что не так. Если уж пишите фразы подобно Установите MSVC и дальше пакет SDK для Windows, а затем все у вас срастется. То это вовсе оказалось не так. Но это немного лирики.)
Задача: собрать среду разработки с максимально новыми компонентами + наиболее популярные сторонние библиотеки для работы с мультимедиа и текстом. На первом этапе будем считать цель достигнутой при условии, что запускаются все примеры стандартного комплекта.1. Собираю в системе:Ноутбук i5-2430M/12Gb/SVGA GF GT555M
Windows 7-64
2. На этот раз собирать систему будем, используя офлайн инсталлятор:qt-opensource-windows-x86-5.11.1.exe (2.39GB)
И все бы было намного проще, если бы не одно НО. Инсталлятор не предоставляет ни одной 32х разрядной сборки с WebEngine. Собственно вообще нет варианта MSVC2017_32. Его и будем пытаться собрать самостоятельно.
Дополнительно скачиваем (если при установки какие то пакеты потребуют поставить галочки на согласие прописать в путях, ставьте):
icu4c-53_1-src.zip
openssl-1.0.2o.tar
python-2.7.15.msi
rubyinstaller-devkit-2.4.4-2-x86.exe
strawberry-perl-5.26.2.1-32bit.msi
DXSDK_Jun10.exe
pthreads-w32-2-9-1-release.zip
sqlite-dll-win32-x86-3240000.zip
LLVM-6.0.0-win32.exe (начиная с QT5.11 требуется для QDoc)
jom_1_1_2.zip
И располагаем в папках:
C:\icu
С icu немного подскажу. Дело в том, что собираем icu с использованием Cygwin. Два варианта установщика setup-x86.exe и setup-x86_64.exe. Какой ставить не особо разбирался. Воспользовался setup-x86.exe. Установка онлайн и надо будет выбрать необходимые компоненты, процедура не очевидна. А между тем, просто в строке поиска последовательно прописываем: make, dos2unix и binutils. Будут оставаться нужные компоненты, для каждого надо нажать мышкой, что бы надпись рядом с пакетом сменилась на install. После установки у вас так же появится папка с этими компонентами, с которой, если понадобится, можно будет переустановить Cygwin в режиме офлайн.
Далее с консоли MSVS2017 (запустить ее можно с кнопки Пуск - Все программы...) вводим следующие команды:
set PATH=%PATH%;C:\cygwin\bin
cd C:\icu\source
dos2unix *
dos2unix -f configure
dos2unix * (еще раз иначе выскочит ошибка '\r': command not found)
bash runConfigureICU Cygwin/MSVC -prefix=/cygdrive/c/icu/dist
make
make install
C:\openssl-1.0.2o
C:\Python27
C:\Ruby24
C:\Strawberry
C:\DXSDK
C:\pthreads
C:\sqlite
C:\LLVM
C:\jom_1_1_2
3. Установка Visual Studio Community 2017 v15.7.4Если вы хотите скачать дистрибутив (38.6GB), делаем это следующим образом:
vs_community.exe --layout D:\vs2017 --lang en-US ru-RU
Однако русскую локализацию можно не ставить (на первых парах все равно придется снимать галочку, иначе будут проблемы):
vs_community.exe --layout D:\vs2017 --lang en-US
Итак, снимаем галочку с русской локали и ставим следующие компоненты:
Если сам MSVC2017 не нужен можно воспользоваться Build Tools, либо онлайн, либо скачать:
Microsoft Visual Studio 2017 Build Tools [15.7.0-15.7.4] (16.1GB)
В дальнейшем можно будет ужать пакет, оставив только необходимые компоненты.
Так же понадобится пакет SDK для Windows 10 (17134.12.180419-0858.rs4_release_svc_prod2_WindowsSDK)
Можно инсталлировать, отметив галочки. Я просто распаковал и устанавил:
X64 Debuggers And Tools-x64_en-us
X86 Debuggers And Tools-x86_en-us
4. Установка Qt 5.11.1 Скачиваем офлайн установщик qt-opensource-windows-x86-5.11.1.exe и ставим в папку по умолчанию C:\Qt\Qt5.11.1 следующие компоненты:
Заметьте, что отмечаем Sources которые понадобятся, что бы скомпилировать свой вариант 32х битной msvc2017_32. Исходники (Sources) окажутся в папке C:\Qt\Qt5.11.1\5.11.1\Src.
Копируем в папку C:\Qt\Qt5.11.1\5.11.1\Src\qtbase\bin файлы библиотек:
C:\icu\dist\lib\icudt53.dll
C:\icu\dist\lib\icuin53.dll
C:\icu\dist\lib\icuuc53.dll
C:\openssl-1.0.2o\dist\bin\libeay32.dll
C:\openssl-1.0.2o\dist\bin\ssleay32.dll
C:\sqlite\sqlite3.dll
В папку C:\Qt\Qt5.11.1\5.11.1\Src\qtbase\lib файлы:
C:\icu\dist\lib\icudt.lib
C:\icu\dist\lib\icuin.lib
C:\icu\dist\lib\icuuc.lib
C:\openssl-1.0.2o\dist\lib\libeay32.lib
C:\openssl-1.0.2o\dist\lib\ssleay32.lib
В папку C:\Qt\Qt5.11.1\5.11.1\Src\qtbase\include копируем папки с файлами заголовков ICU и OpenSSL:
C:\icu\dist\include\layout
C:\icu\dist\include\unicode
C:\openssl-1.0.2o\dist\include\openssl
Каталог ресурсов Src сохранил дополнительно на диске D:\ на случай дальнейших экспериментов.5. Собирать будем раздельно в каталоге C:\msvc2017_32.В C:\Qt\Qt5.11.1\5.11.1\Src создаем файл msvc2017_32.cmd с содержимым:
SET _ROOT=C:\Qt\Qt5.11.1\5.11.1\Src
SET QT_INSTALL=C:\msvc2017_32
SET PATH=C:\sqlite;%PATH%
SET PATH=C:\pthreads\Pre-built.2\dll\x86;%PATH%
SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH%
SET QTDIR=
SET QMAKESPEC=
SET _ROOT=
set cl=/MP
CALL "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86
cmd /k
6. Конфигурирование сборки.В каталоге C:\Qt\Qt5.11.1\5.11.1\Src запускаем файл msvc2017_32.cmd
После чего видим прописанные пути и консоль MSVC 2017 инициализированной для 'x86':
C:\Qt\Qt5.11.1\5.11.1\Src>SET PATH=C:\Qt\Qt5.11.1\5.11.1\Src\qtbase\bin;C:\Qt\Qt
5.11.1\5.11.1\Src\gnuwin32\bin;C:\pthreads\Pre-built.2\dll\x86;C:\sqlite;C:\msvc
2017_32\bin;C:\Ruby24\bin;C:\Python27\;C:\Python27\Scripts;C:\Windows\system32;C
:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C
:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\7-Zip;C:\
Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\LLVM\bin
...
C:\Qt\Qt5.11.1\5.11.1\Src>CALL "C:\Program Files (x86)\Microsoft Visual Studio\2
017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86
**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.7.4
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x86'
C:\Qt\Qt5.11.1\5.11.1\Src>
7. Не закрывая консоль, запускаем строку конфигурирования:configure -prefix %QT_INSTALL% -I "C:\openssl-1.0.2o\dist\include" -L "C:\openssl-1.0.2o\dist\lib" -I "C:\icu\dist\include" -L "C:\icu\dist\lib" -platform win32-msvc -mp -debug-and-release -webengine-proprietary-codecs -sse2 -openssl -icu -opensource -qt-sqlite -plugin-sql-odbc -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -make libs -make tools -opengl dynamic
Спустя немного времени на предложение о лицензионном соглашении просто нажимаем
y и
Enter. Дожидаемся окончания конфигурирования.
8. Снова, не закрывая консоли, вводим последовательно:nmake
nmake install
На самом деле вроде как запускали в многопоточном режиме(set cl=/MP и -mp), однако nmake довольно долго работает. На моем ноутбуке i5-2430M/12Gb/SVGA GF GT555M, этот процесс занял 13 часов 35минут.
Можно сэкономить примерно полтора часа. Если использовать jom. В этом случае просто в путях пропишите C:\jom_1_1_2; (если конечно распаковали его в эту папку) и вам будет предложено воспользоваться:
jom
jom install
9. После сборки копируем в папку C:\msvc2017_32\bin файлы:
C:\icu\dist\lib\icudt53.dll
C:\icu\dist\lib\icuin53.dll
C:\icu\dist\lib\icuuc53.dll
Туда же копируем файлы:
C:\Qt\Qt5.11.1\5.11.1\Src\qtbase\bin\qt.conf
C:\Qt\Qt5.11.1\5.11.1\Src\qtbase\bin\fixqt4headers.pl
10. Поскольку в этот раз облегчили себе задачу, собирать дополнительно документацию и примеры не придется. Они установилены при инсталляции Qt5.11.1.
Теперь у нас наряду со сборками:
mingw53_32
msvc2017_64
Имеется сборка msvc2017_32.
Прописываем новый комплект в Qt, не забывая, что сборка находится в C:\msvc2017_32.
11. Казалось бы радоваться. Однако наша задача заключалась в получении сборки, которая запускала бы все стандартные примеры из комплекта Qt.
Так вот примеры, использующие WebEngine в режиме отладки, вылетают с сообщением: Программа неожиданно завершилась. А в режиме релиза запускается окно, но контента нет, как например в случае со сборкой msvc2017_64, полученной при инсталляции.
Остальные примеры, вроде как запускаются.
Я прошел семь кругов ада, испробовав все и потратив пару недель именно на то, что бы установить правильно WebEngine, бесконечно экспериментируя и долго ожидая окончания компиляции, что бы увидеть, что снова все напрасно.
Например, сейчас снова пытаюсь собрать. На этот раз, при установке Visual Studio Community 2017, не ставил Windows 8.1 SDK... и VC++ 2015.3 v14.00(140)... Может они конфликтуют с новыми пакетами. Оставлял их, что бы работать с пакетами msvc2015_32, msvc2015_64 и дособирать их с WebEngine. Конфигурации msvc2015_32, msvc2015_64 имеются в установщике Qt, но собираются без WebEngine.
Вы моя последняя надежда Гуру. Что не так сделано?
Компилируется вроде нормально, но если это о чем то серьезном говорит, то при компиляции были такие сообщения:
...QtWebEngineCore_cc.pdb"
cl: Command line warning D9025 : overriding '/W3' with '/W4'
cl: Command line warning D9025 : overriding '/02' with '/01'
cl: Command line warning D9025 : overriding '/01' with '/02'
cl: Command line warning D9025 : overriding '/W4' with '/W3'