Russian Qt Forum
Июль 22, 2018, 02:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сборка Qt 5 со всем новым и необходимым для изучения и тренировки  (Прочитано 425 раз)
Serega
Самовар
**
Offline Offline

Сообщений: 103


Просмотр профиля
« : Июль 01, 2018, 13:42 »

Задался целью разобраться серьезнее с Qt и поэкспериментировать/потренироваться, собрав все самое необходимое и новое. Необходимо будет работать с: мультимедиа аудио/видео, текстом, HTML...
В связи с этим первый вопрос. Какие библиотеки порекомендуете установить? И чего будет недоставать при сборке Qt, описанной ниже?
Возможно, придется установить несколько Qt-сборок?

Второй вопрос, собственно по сборке (что не учел и что понадобится), и конкретно по сборке документации (как собрать).
Сборка в отдельную папку:
1. Собираю в системе:
Ноутбук i5-2430M/12Gb/SVGA GF GT555M
Windows 7-64

2. Взял все самое новое:
MSYS-1.0.11 (с MSYS2 что-то не смог разобраться)
i686-8.1.0-release-posix-dwarf-rt_v6-rev0
qt-everywhere-src-5.11.1.tar (.zip тоже пробовал, для того, чтобы убедиться, что дело не в битом пакете)
qt-creator-opensource-windows-x86-4.6.2
openssl-1.0.2n.tar (openssl-1.0.2o.tar почему то отказался собираться)
icu4c-62_1-src
python-2.7.15.msi (пока не разобрался стоит ли пробовать ставить 3й или, что-то откажется работать)
rubyinstaller-devkit-2.4.4-2-x86
strawberry-perl-5.26.2.1-32bit
LLVM-6.0.0-win32.exe (насколько понял это требуется для QDoc в QT5.11)

И расположил в папках:
C:\MinGW
C:\openssl-1.0.2n
C:\icu
C:\Python27
C:\Ruby24
C:\Strawberry
C:\LLVM

Исходники:
C:\QT\5.11.1

Собираем здесь:
C:\QT\Qt-5.11.1

Для тех, кто будет собирать по подобной схеме:
Копируем (по совету одного из описаний сборки) в папку C:\QT\5.11.1\qtbase\bin файлы библиотеки ICU:
C:\icu\dist\lib\icudt62.dll
C:\icu\dist\lib\icuin62.dll
C:\icu\dist\lib\icuuc62.dll

В папку C:\QT\5.11.1\qtbase\lib файлы:
C:\icu\dist\lib\icudt.dll
C:\icu\dist\lib\icuin.dll
C:\icu\dist\lib\icuuc.dll

В папку C:\QT\5.11.1\qtbase\include копируем папки с файлами заголовков:
C:\icu\dist\include\layout - ЭТОЙ ПАПКИ НЕ НАШЕЛ (взял с C:\icu\source\layoutex)
C:\icu\dist\include\unicode
C:\openssl-1.0.2n\dist\include\openssl

После сборки Qt копируем в папку C:\Qt\Qt-5.11.1\bin файлы (иначе Qt не будет компилировать):
C:\icu\dist\lib\icudt62.dll
C:\icu\dist\lib\icuin62.dll
C:\icu\dist\lib\icuuc62.dll
C:\Qt\MinGW\bin\libgcc_s_dw2-1.dll
C:\Qt\MinGW\bin\libstdc++-6.dll
C:\Qt\MinGW\bin\libwinpthread-1.dll
C:\Qt\5.11.1\qtbase\bin\qt.conf
C:\Qt\5.11.1\qtbase\bin\fixqt4headers.pl

3. Закинул qt5vars.cmd в C:\QT\5.11.1 с содержимым:
SET _ROOT=C:\QT\5.11.1
SET QT_INSTALL=C:\QT\Qt-5.11.1
SET MINGWDIR=C:\MinGW
SET PYTHON2DIR=C:\Python27
SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PYTHON2DIR%;%PATH%
:: Эта парочка, скорее всего лишняя:
SET PATH=C:\icu\dist\bin;%PATH%
SET PATH=C:\openssl-1.0.2n\dist\bin;%PATH%
cmd /k

Запускаем и получаем такие пути:
C:\QT\5.11.1>SET PATH=C:\openssl-1.0.2n\dist\bin;C:\icu\dist\bin;C:\QT\5.11.1\qt
base\bin;C:\QT\5.11.1\gnuwin32\bin;C:\Python27;C:\MinGW\bin;C:\Ruby24\bin;C:\Win
dows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPow
erShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program
Files\7-Zip;C:\LLVM\bin;C:\Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Straw
berry\perl\bin

4. Не закрывая консоли, сконфигурировал:
configure -prefix %QT_INSTALL% -I "C:\openssl-1.0.2n\dist\include" -L "C:\openssl-1.0.2n\dist\lib" -I "C:\icu\dist\include" -L "C:\icu\dist\lib" -platform win32-g++ -debug-and-release -sse2 -openssl -icu -opensource -no-angle -qt-sqlite -plugin-sql-odbc -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -make libs -make tools -opengl desktop

5. Собираем (отключив антивирус):
mingw32-make -j5 (5 часов)
mingw32-make -j5 install

6. Далее в той же консоли (не закрывая) запустил командный файл conf4_docs.cmd с содержимым:
SET QT_INSTALL=C:\QT\Qt-5.11.1
SET PATH=%QT_INSTALL%\bin%PATH%
SET LLVM_INSTALL_DIR=C:\LLVM
SET QT_INSTALL_DOCS=C:\QT\Qt-5.11.1\doc

Получаем такие пути:
C:\QT\5.11.1>SET PATH=C:\QT\Qt-5.11.1\bin;C:\openssl-1.0.2n\dist\bin;C:\icu\dist
\bin;C:\QT\5.11.1\qtbase\bin;C:\QT\5.11.1\gnuwin32\bin;C:\Python27;C:\MinGW\bin;
C:\Ruby24\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows
\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\Phys
X\Common;C:\Program Files\7-Zip;C:\LLVM\bin;C:\Strawberry\c\bin;C:\Strawberry\pe
rl\site\bin;C:\Strawberry\perl\bin

7. Пытаемся собрать документацию:
mingw32-make -j5 docs

Получаем:
"C:\QT\Qt-5.11.1\bin\qdoc.exe" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
mingw32-make[6]: *** [Makefile.Debug:1174: prepare_docs] Error 9009
mingw32-make[6]: Leaving directory 'C:/QT/5.11.1/qtbase/src/corelib'
mingw32-make[5]: *** [Makefile:315: debug-prepare_docs] Error 2
mingw32-make[5]: Leaving directory 'C:/QT/5.11.1/qtbase/src/corelib'
mingw32-make[4]: *** [Makefile:1796: sub-corelib-prepare_docs] Error 2
mingw32-make[4]: Leaving directory 'C:/QT/5.11.1/qtbase/src'
mingw32-make[3]: *** [Makefile:435: sub-src-prepare_docs] Error 2
mingw32-make[3]: Leaving directory 'C:/QT/5.11.1/qtbase'
mingw32-make[2]: *** [Makefile:2320: module-qtbase-prepare_docs] Error 2
mingw32-make[2]: Leaving directory 'C:/QT/5.11.1'
mingw32-make[1]: *** [Makefile:1459: html_docs] Error 2
mingw32-make[1]: Leaving directory 'C:/QT/5.11.1'
mingw32-make: *** [Makefile:1462: docs] Error 2

qdoc.exe действительно нет в папке Qt-5.11.1\bin.

Цитировать
As of this writing, users wishing to build and/or run QDoc must install LLVM 3.9 or greater and set the variable LLVM_INSTALL_DIR accordingly. The pre-built binaries needed can be found here.
Не знаю, как с этим работать и поступил по простому, выбрал по указанной ссылке LLVM-6.0.0-win32.exe, установил в каталог C:\LLVM, как видно выше создал переменную SET LLVM_INSTALL_DIR=C:\LLVM. Дальше, как видим выше, ничего хорошего не получилось.

_______________________
Справедливости ради, хочу сказать, что собирал QT-5.9.6 по такой же схеме. Документацию собирал и она собирается:
mingw32-make -j5
mingw32-make -j5 install
Однако как не пытался, но мне не так и не удалось собрать документацию в целевой папке. Документация собирается в исходной, чего только не делал (наверное, только нужного шага не сделал), перерыл интернет, потратил несколько дней и решил, наконец, посоветоваться. Но там хоть простым копированием (с исходной в целевую) запустил документацию (насколько это правильно не знаю).
Так же и с Qt-5.10. Там собирается только в исходной папке (хотя какие то предупреждения уже выдает), но все-таки собирается, хотя вроде тоже уже требуется LLVM/libllvm:
Цитировать
Note: from Qt version 5.10 LLVM/libllvm version >= 3.9 is required to build QDoc. See Installing clang for QDoc. If LLVM is not installed or it would not be found in package tree of your system, QDoc will not be built and you will not be able to build documentation. Once LLVM is installed the LLVM_INSTALL_DIR environment variable must be set pointing to its top-level installation directory.

Топик получился не малый, но решил описать все подробнее, что бы опытные Гуру заметили ошибки, а так же дали дельные советы. Заранее огромное спасибо, что хотя бы почитать не сочли за труд.
Итак, как все таки собрать документацию в Qt-5.11.1, причем в папку сборки самой QT - C:\QT\Qt-5.11.1\doc?
И что еще следует полезного установить и пригодится для полного счастья, что бы можно было уже ни о чем не беспокоиться, тренироваться и пытаться, что-то творить, в хорошем смысле этого слова?

« Последнее редактирование: Июль 01, 2018, 17:14 от Serega » Записан
ViTech
Бывалый
*****
Offline Offline

Сообщений: 471



Просмотр профиля
« Ответ #1 : Июль 01, 2018, 14:35 »

А чем не устраивают готовые сборки из Qt Online Installer? Или цель именно самому собрать Qt?
Записан

Пока сам не сделаешь...
Serega
Самовар
**
Offline Offline

Сообщений: 103


Просмотр профиля
« Ответ #2 : Июль 01, 2018, 14:43 »

Можно конечно воспользоваться и готовыми сборками, но как писал выше, все таки есть желание чуть больше разобраться с этой "кухней" и постепенно научиться собирать сторонние модули, если понадобятся. Кроме того иногда ковыряю открытый совместный проект, который требует сборки Qt.
« Последнее редактирование: Июль 01, 2018, 14:45 от Serega » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2558


Просмотр профиля
« Ответ #3 : Июль 01, 2018, 15:10 »

кажется, не собрался qttools (или где там qdoc живет). Не знаю, должен ли он собираться по умолчанию, но можно просто сделать туда cd, qmake && make && make install
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5668


Жаждущий знаний


Просмотр профиля
« Ответ #4 : Июль 01, 2018, 15:50 »

Можно конечно воспользоваться и готовыми сборками, но как писал выше, все таки есть желание чуть больше разобраться с этой "кухней" и постепенно научиться собирать сторонние модули, если понадобятся. Кроме того иногда ковыряю открытый совместный проект, который требует сборки Qt.
Тоже всегда под винду собирал сам. Хотя, я гентушник, это неизлечимо. Улыбающийся
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
-------------------------------
https://twitter.com/panter_dsd
https://facebook.com/panter.dsd
Serega
Самовар
**
Offline Offline

Сообщений: 103


Просмотр профиля
« Ответ #5 : Июль 14, 2018, 11:04 »

(Описанная ниже последовательность сэкономит особенно новичкам массу нервов и времени. Сложно дойти до конца. Дело в том, что судя по всему описания в интернете попросту списаны друг у друга. Если уж пишите то пишите ВСЕ. Несколько дней потратил только на установку 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'
« Последнее редактирование: Июль 15, 2018, 14:06 от Serega » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Страница сгенерирована за 0.079 секунд. Запросов: 23.