Russian Qt Forum
Ноябрь 01, 2024, 11:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сборка Qt-5.5.0 из исходников. Ошибки при сборке ICU - C++ Qt  (Прочитано 6921 раз)
AccumPlus
Гость
« : Сентябрь 06, 2015, 00:04 »

Доброго времени суток!
Пытаюсь собрать Qt-5.5.0 из исходников. Заранее прошу не корить за неверно выбранные термины - я в этом деле новичок.
Следую этому мануалу. Всё устанавливаемое программное обеспечение 32-ух разрядное. Система Windows 10 64x.
Первая проблема возникла при сборке ICU. На этом шаге появилась ошибка "error '_hypot' was not declared in this scope". Здесь посоветовали использовать флаг "-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;



Большое спасибо!
Записан
BuRn
Гость
« Ответ #1 : Сентябрь 06, 2015, 00:15 »

А вам нужен вообще icu ? У меня тоже были ошибки сборки, но мне он не нужен и я его просто исключил из сборки
Записан
AccumPlus
Гость
« Ответ #2 : Сентябрь 06, 2015, 00:25 »

А вам нужен вообще icu ? У меня тоже были ошибки сборки, но мне он не нужен и я его просто исключил из сборки
Вопрос конечно хороший... Моя ключевая цель - это сборка с openssl, ибо установщики Qt её по умолчанию не имеют, а все мои попытки подключения этих библиотек в уже установленную программу окончились неудачно. Но тем не менее я не исключаю возможности использования всех инструментов Qt, в том числе и QtWebKit, который, насколько я понимаю, не соберётся без ICU.
Я бы и с MySQL собрал, но ошибок навылазило в несколько раз больше, да и прикрутить его к уже собранной Qt возможно. Конечно, было бы здорово собрать всё за раз. И я был бы очень благодарен, если бы вы меня проинформировали, как собрать Qt с MySQL или хотя бы перенаправили на хорошую инструкцию)
Записан
Kurles
Бывалый
*****
Offline Offline

Сообщений: 480



Просмотр профиля
« Ответ #3 : Сентябрь 06, 2015, 17:50 »

Моя ключевая цель - это сборка с openssl, ибо установщики Qt её по умолчанию не имеют
Кто это вам сказал?
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
_Konstantin_
Гость
« Ответ #4 : Сентябрь 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, это вообще можно плагином подключить, а не драйверами...
Записан
AccumPlus
Гость
« Ответ #5 : Сентябрь 06, 2015, 21:42 »

Кто это вам сказал?
Да собственно практика показала... У меня прога, передающая/принимающая данные по https протоколу не работает, а у товарища всё ок. Советы типа "добавьте пару dll файлов из openssl" не помогли, поэтому решили, что нужно собирать.

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

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

Сообщений: 480



Просмотр профиля
« Ответ #6 : Сентябрь 06, 2015, 23:24 »

Кто это вам сказал?
Да собственно практика показала... У меня прога, передающая/принимающая данные по https протоколу не работает, а у товарища всё ок. Советы типа "добавьте пару dll файлов из openssl" не помогли, поэтому решили, что нужно собирать.
Ух ты, точно, Qt5.5.0 без ssl из коробки идёт... Qt4.8 - поддержка ssl из коробки.
Записан

Код
C++ (Qt)
while(!asleep()) sheep++;
Bepec
Гость
« Ответ #7 : Сентябрь 07, 2015, 00:53 »

Блииин, как жеж я этого не заметил... Пасип Kurles.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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