Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: AccumPlus от Сентябрь 06, 2015, 00:04



Название: Сборка Qt-5.5.0 из исходников. Ошибки при сборке ICU - C++ Qt
Отправлено: AccumPlus от Сентябрь 06, 2015, 00:04
Доброго времени суток!
Пытаюсь собрать Qt-5.5.0 из исходников. Заранее прошу не корить за неверно выбранные термины - я в этом деле новичок.
Следую этому (http://qtlinux.narod.ru/make_qt5.htm) мануалу. Всё устанавливаемое программное обеспечение 32-ух разрядное. Система Windows 10 64x.
Первая проблема возникла при сборке ICU. На этом шаге появилась ошибка "error '_hypot' was not declared in this scope". Здесь (https://github.com/g-truc/glm/issues/300) посоветовали использовать флаг "-D__NO_INLINE__" в опциях компилятора. Долго тупил, куда этот флаг прописать, поэтому пробовал везде, где только писалось. Положительный результат проявился после редактирования файла runConfigureICU, который лежит в папке исходников ICU, следующим образом:

...
MacOSX/GCC)
THE_OS="MacOS X (Darwin)"
THE_COMP="the GNU C++"
RELEASE_CFLAGS='-O2'
RELEASE_CXXFLAGS='-O2'
DEBUG_CFLAGS='-g -O0'
DEBUG_CXXFLAGS='-g -O0'
CC=gcc; export CC
CXX=g++; export CXX
;;
MinGW)
THE_OS="MinGW"
THE_COMP="the GNU C++"
RELEASE_CFLAGS='-O3'
RELEASE_CXXFLAGS='-O3'
CXXFLAGS="--std=c++03 -D__NO_INLINE__"
export CXXFLAGS
;;
MSYS/MSVC)
THE_OS="MSYS"
THE_COMP="Microsoft Visual C++"
CC=cl; export CC
CXX=cl; export CXX
RELEASE_CFLAGS='-Gy -MD'
RELEASE_CXXFLAGS='-Gy -MD'
DEBUG_CFLAGS='-Zi -MDd'
DEBUG_CXXFLAGS='-Zi -MDd'
DEBUG_LDFLAGS='-DEBUG'
;;
...

Я не знаю, насколько это верно, но по крайней мере та ошибка больше не вылезала.

Следующий ступор возник непосредственно на этапе сборки Qt при использовании команды mingw32-make. Начали вылазить проблемы, связанные с путями к ICU и Openssl. Пришлось немного поменять файл config.bat (указанный на сайте того мануала) следующим образом:

set INCLUDE=D:\Programs\Qt\qt-5-deps\icu\dist\include
set INCLUDE=%INCLUDE%;D:\Programs\Qt\qt-5-deps\openssl-1.0.1p\dist\include

set LIB=D:\Programs\Qt\qt-5-deps\icu\dist\lib
set LIB=%LIB%;D:\Programs\Qt\qt-5-deps\openssl-1.0.1p\dist\lib

set QMAKESPEC=
set QTDIR=

set PATH=D:\Programs\Qt\qt-5.5.0\qtbase\bin
set PATH=%PATH%;D:\Programs\Qt\qt-5.5.0\gnuwin32\bin
set PATH=%PATH%;D:\Programs\MinGW\bin
set PATH=%PATH%;D:\Programs\Strawberry\c\bin
set PATH=%PATH%;D:\Programs\Strawberry\perl\bin
set PATH=%PATH%;D:\Programs\Python2.7
set PATH=%PATH%;D:\Programs\Ruby22\bin
set PATH=%PATH%;D:\Programs\Qt\qt-5-deps\icu\dist\bin
set PATH=%PATH%;D:\Programs\Qt\qt-5-deps\openssl-1.0.1p\dist\bin
set PATH=%PATH%;D:\Programs\Git\cmd
set PATH=%PATH%;%SystemRoot%\System32

set MAKE_COMMAND=

set DXSDK_DIR=D:\Programs\DXSDK\

configure -prefix D:\Programs\Qt\qt-5.5.0\qtbase -opensource -confirm-license -platform win32-g++ -release -shared -debug-and-release -c++11 -qt-zlib -icu -opengl desktop -openssl -iconv -plugin-sql-odbc -nomake tests -nomake examples -I D:\Programs\Qt\qt-5-deps\icu\dist\include -I D:\Programs\Qt\qt-5-deps\openssl-1.0.1p\dist\include -L D:\Programs\Qt\qt-5-deps\icu\dist\lib -L D:\Programs\Qt\qt-5-deps\openssl-1.0.1p\dist\lib

То есть пришлось явно указать пути к LIB и INCLUDE в команде configure, используя параметры -L и -I.

Далее сборка шла около сорока минут, пока не начали высвечиваться ошибки (так я и не понял, как на вашем форуме вставлять картинки из вложений, поэтому они просто прикреплены к сообщению).

На просторах интернета я не нашёл ничего дельного, поэтому решил обратиться сюда. Как решить данную проблему?

Если понадобится, то вот содержимое переменной PATH (для наглядности сделал списком):

D:\Programs\Python2.7\;
D:\Programs\Python2.7\Scripts;
%SystemRoot%\system32;
%SystemRoot%;
%SystemRoot%\System32\Wbem;
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;
C:\Program Files (x86)\Skype\Phone\;
C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;
C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;
D:\Programs\MySQL\bin;
D:\Programs\Strawberry\c\bin;
D:\Programs\Strawberry\perl\site\bin;
D:\Programs\Strawberry\perl\bin;
D:\Programs\Git\cmd;
D:\Programs\MinGW\bin;
D:\Programs\DXSDK;
D:\Programs\Ruby22\bin;


Большое спасибо!


Название: Re: Сборка Qt-5.5.0 из исходников. Ошибки при сборке ICU - C++ Qt
Отправлено: BuRn от Сентябрь 06, 2015, 00:15
А вам нужен вообще icu ? У меня тоже были ошибки сборки, но мне он не нужен и я его просто исключил из сборки


Название: Re: Сборка Qt-5.5.0 из исходников. Ошибки при сборке ICU - C++ Qt
Отправлено: AccumPlus от Сентябрь 06, 2015, 00:25
А вам нужен вообще icu ? У меня тоже были ошибки сборки, но мне он не нужен и я его просто исключил из сборки
Вопрос конечно хороший... Моя ключевая цель - это сборка с openssl, ибо установщики Qt её по умолчанию не имеют, а все мои попытки подключения этих библиотек в уже установленную программу окончились неудачно. Но тем не менее я не исключаю возможности использования всех инструментов Qt, в том числе и QtWebKit, который, насколько я понимаю, не соберётся без ICU.
Я бы и с MySQL собрал, но ошибок навылазило в несколько раз больше, да и прикрутить его к уже собранной Qt возможно. Конечно, было бы здорово собрать всё за раз. И я был бы очень благодарен, если бы вы меня проинформировали, как собрать Qt с MySQL или хотя бы перенаправили на хорошую инструкцию)


Название: Re: Сборка Qt-5.5.0 из исходников. Ошибки при сборке ICU - C++ Qt
Отправлено: Kurles от Сентябрь 06, 2015, 17:50
Моя ключевая цель - это сборка с openssl, ибо установщики Qt её по умолчанию не имеют
Кто это вам сказал?


Название: Re: Сборка Qt-5.5.0 из исходников. Ошибки при сборке ICU - C++ Qt
Отправлено: _Konstantin_ от Сентябрь 06, 2015, 21:05
Начните от простого к сложному. Тут описано подробно, но на английском http://doc.qt.io/qt-5/configure-options.html#compiler-options
тут описывают на русском, но без описания конкретных опций, однако там прописан порядок http://yourdevice.net/forum/viewtopic.php?f=19&t=1943&sid=95b47b1793f1efee60649b3bb8c3e61f если делать под Linux, то необходимые пакеты так же и там нужно доставлять.
Еще нужно обратить внимание на различные зависимости если ставите под Linux. Это есть в документации по первой ссылке.
Касаемо WebKit - этот монстр вам не пригодится если не будете писать свои собственные браузерные решения. А собирается он зараза капризно... Поэтому если не будете использовать, то не тратьте время. Насчет MySql, это вообще можно плагином подключить, а не драйверами...


Название: Re: Сборка Qt-5.5.0 из исходников. Ошибки при сборке ICU - C++ Qt
Отправлено: AccumPlus от Сентябрь 06, 2015, 21:42
Кто это вам сказал?
Да собственно практика показала... У меня прога, передающая/принимающая данные по https протоколу не работает, а у товарища всё ок. Советы типа "добавьте пару dll файлов из openssl" не помогли, поэтому решили, что нужно собирать.

Касаемо WebKit - этот монстр вам не пригодится если не будете писать свои собственные браузерные решения. А собирается он зараза капризно... Поэтому если не будете использовать, то не тратьте время.
Тут уже наверное спортивный интерес) Столько ошибок было сломлено, а эта зараза вылазит. Не хочется сдаваться. Спасибо за ссылки, может найду что-нибудь дельное.

Насчет MySql, это вообще можно плагином подключить, а не драйверами...
А в чём основное различие?


Название: Re: Сборка Qt-5.5.0 из исходников. Ошибки при сборке ICU - C++ Qt
Отправлено: Kurles от Сентябрь 06, 2015, 23:24
Кто это вам сказал?
Да собственно практика показала... У меня прога, передающая/принимающая данные по https протоколу не работает, а у товарища всё ок. Советы типа "добавьте пару dll файлов из openssl" не помогли, поэтому решили, что нужно собирать.
Ух ты, точно, Qt5.5.0 без ssl из коробки идёт... Qt4.8 - поддержка ssl из коробки.


Название: Re: Сборка Qt-5.5.0 из исходников. Ошибки при сборке ICU - C++ Qt
Отправлено: Bepec от Сентябрь 07, 2015, 00:53
Блииин, как жеж я этого не заметил... Пасип Kurles.