Building Qt 5 from Git/ru

From Qt Wiki
< Building Qt 5 from Git
Revision as of 14:14, 14 January 2015 by Maintenance script (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Русский English 简体中文 Български Français

Сборка Qt 5 из Git

Введение

В этой статье мы попытаемся дать некоторые объяснения касательно получения модулей Qt 5 из git и способы последующей их сборки. Не стесняйтесь обновлять эту статью, некоторые вещи изменяются во время разработки. Обсуждение проблем и их решения можно найти в ветке форума http://developer.qt.nokia.com/forums/viewthread/7018 (на английском).

Требования к системе

Вам очевидно потребуется git (>= 1.6.x) для получения пакетов.

Чтобы правильно сконфигурировать и собрать Qt 5 из исходных текстов, вам будут необходимы Perl (>=5.14) и Python (>=2.6.x), а так-же рабочий компилятор.

Для включения поддержки SSL в QT посмотрите: http://doc.qt.io/qt-5.0/qtnetwork/ssl.html

Linux/X11

Основы сборки

Ubuntu/Debian:

Libxcb [xcb.freedesktop.org] теперь является бэкэндом оконной системы по умолчанию для платформ на основе X11/Xorg, и поэтому вы должны установить libxcb и его сопроводительные пакеты. Qt5 может быть собран с любой libxcb версией, доступной в дистрибутивных пакетах (но вы можете дополнительно использовать v1.8 или выше, чтобы распараллелить поддержку рендеринга).
src/plugins/platforms/xcb/README [qt.gitorious.org] перечисляет требуемые пакеты.

Libxcb

Ubuntu/Debian:
Fedora 16 и выше:
Fedora 17+ (xcb-util-renderutil в настоящее время доступно в обновлениях тестового репозитария, но пока работает не устойчиво):
Команда установки perl-version для Fedora
ArchLinux:

На Linux Chakra, кроме пакетов, упомянутых для ArchLinux, вы должны дополнительно установить пакет xcb-util-keysyms. Этот пакет доступен из CCR.

Mandriva/ROSA/Unity:

Поддержка OpenGL

Для QtQuick2 настоятельно рекомендуется графический драйвер с собственной поддержкой OpenGL 2.0.

QtJsonDb

QtJsonDb зависит от libedit:

Ubuntu/Debian:
Mandriva/ROSA/Unity:

Qt WebKit

Перед тем как компилировать webkit, вам потребуется установить следующие зависимые пакеты:

Ubuntu/Debian:
Fedora:
Mandriva/ROSA/Unity:

QtWayland зависимости

Для сборки модуля QtWayland, должны быть установлены библиотеки разработки Wayland [wayland.freedesktop.org] (<код> libxcomposite-dev <!—код—> и <код> libwayland-dev <!—код—>).

Mac OS X

XCode и GIT должно быть достаточно.

Windows

Графические драйверы Windows

Для работы QML2 потребуются драйвера OpenGL (Nvidia, и т.д.), с поддержкой OpenGL 2.1 или выше для вашей видеокарты. По умолчанию, в Windows установлены драйвера с поддержкой OpenGL 1.1, которой будет недостаточно.

Альтернативой может служить , ANGLE-library [code.google.com], которая обеспечивает, Open GL ES 2.0, переводящая вызовы Open_GL в _Direct X _. Чтобы создать её, вы должны проделать следующее:

  1. установить Direct X SDK [msdn.microsoft.com]
  2. получить и скомпилировать ANGLE (из SVN репозитория) как описано на этой странице [code.google.com]
  3. Примечание: При сборке для 64х битных систем, деактивируйте опцию WarnAsError в каждом файле проекта (поскольку в противном случае предупреждения о целочисленных преобразованиях повредят сборку).
  4. При конфигурировании Qt передайте в параметры командной строки
    -opengl es2 -angle &lt;path&gt;
    

Поддерживаемые компиляторы на Windows

  • Windows SDK 7.1 с Visual Studio 2010 (предпочтительно). С 16.03.2012, при установке SDK потребуется установка пакетов в следующем порядке (см. readme.html предоставленный пакетом обновления):
  1. Установка Visual Studio 2010
  2. Установка Windows SDK 7.1
  3. Установка Visual Studio 2010 SP1
  4. Установка Visual C++ 2010 SP1 Обновление компилятора для Windows SDK 7.1
  • Windows SDK 7 с Visual Studio 2008
  • Windows Kit 8 with Visual Studio 2012
  • MinGW [mingw.org] или TDM MinGW [tdm-gcc.tdragon.net] с g++ версии 4.6 или выше (поддерживается не всеми модулями)

Среда сборки Windows

Мы рекомендуем создать файл командной строки, который предоставит среду сборки (см. Qt Creator README [qt.gitorious.org]). В этой среде Python (например, Active Python 2.7 или старше) и Perl (например, Active State Perl 5.12 или старше) должны быть указаны в переменной среды PATH.
Скачать Perl: http://www.activestate.com/activeperl/downloads [activestate.com]
Скачать Python: http://www.python.org/download/releases/ [python.org]
Скачать Ruby: http://www.rubyinstaller.org/downloads/ [rubyinstaller.org]

Подсказка: Удостоверьтесь, что Perl описан в пути PATH перед git, так как последний имеет устаревшую версию (Perl 5. 8), и может прервать работу сценария.

Многопроцессорная сборка: При использовании nmake, может быть установлена переменная окружения CL (опция компилятора Visual Studio)

set CL=/MP

, давая компилятору команду использовать все ядра. Альтернативно, может использоваться инструмент jom [qt.io]. Однако, надо отметить, что у него есть проблемы с взаимозависимостями модуля, которые могут прервать сборку.

ICU на Windows

Qt 5 может использовать библиотеку ICU [site.icu-project.org] для UNICODE и поддержки Глобализации. Это требуется для создания QtWebKit.

Во время компиляции include и lib папки установки ICU должны быть добавлены к INCLUDE и LIB переменным окружения после вызова сценария установки SDK Windows.

Во время выполнения ICU должны быть найдены DLL библиотеки. Это может быть достигнуто, с помощью копирования DLL в папку приложения или добавления папки bin установленного ICU в переменную окружения PATH.

Получение исходного кода

Сначала клонируйте верхний уровень git репозитария Qt 5:

или (если вы находитесь за межсетевым экраном можно использовать https протокол):

После прочтения README [qt.gitorious.org] – файла, мы инициализируем репозитарий, используя сценарий init-repository, который клонирует различные подмодули Qt5. Соответствующие опции:

  • no-webkit
    
    : Позволяет не загружать qtwebkit, при передаче этой опции. Этот модуль довольно большой, компиляция занимает много времени и часто является источником ошибок. Таким образом, рекомендуется загружать и собирать его, только если намереваетесь использовать. В дальнейшем вы всегда можете повторно выполнить init-repository, чтобы добавить этот подмодуль.
  • http
    
     : Передайте эту опцию, если находитесь позади брандмауэра.

Если вы планируете участвовать в развитии Qt, вы должны определить codereview username свое имя пользователя, это необходимо для того чтобы отделить особенности вашей версии:

Конфигурирование и сборка

Установите путь так, чтобы использовать инструменты Qt5, а не старые Qt4 и прочие, которые могут присутствовать в системе:

Для Linux/Mac OS X:

Для Windows:

Теперь сконфигурируйте сборку (из директория верхнего уровня). Отключение тестов tests и примеров examples значительно ускорит компиляцию:

Для Linux/Mac OS X:

Для Windows:

-developer-build

эта опция экспортирует больше символов, чем в традиционной сборке Qt, что позволяет большему количеству классов и функций быть протестированными модулем. Это также значение по умолчанию для сборки отладочной версии и установки двоичных файлов в текущем каталоге, и позволяет избежать потребности в ‘make install’.

-opensource

устанавливает лицензию LGPL 2.1.

-nomake examples

и

-nomake tests

исключение из сборки тестов и примеров. в дальнейшем вы всегда можете собрать их отдельно.

  • Подсказка 1: На Linux вы должны также передать параметр
    -no-gtkstyle
    
    . Это вызвано тем, что в ряде систем (по крайней мере, SUSE и Gentoo)
    pkg-config cflags gtk+-2.0
    
    фактически возвращает пути, которые включают в систему Qt4.x-include каталоги.
  • Подсказка 2: Можете добавить
    -confirm-license
    
    , чтобы принять лицензию избавиться от вопроса о ее принятии.
  • Подсказка 3: На Windows вы не в состоянии осуществить сборку, если
    sh.exe
    
    находится в _ %PATH %_ (например, из-за установленного_git_ или msys). Такая ошибка обозначается в сообщениях
    qt5-srcqtbasebinqmake.exe: command not found
    
    и подобных. В этом случае удостоверьтесь, что
    sh.exe
    
    не указан в переменной _ %PATH %_. Вы должны будете вновь сконфигурировать сборку, в случае если вы его удалили.

Запускаем сборку, вызывая build perl сценарий:

Для Linux:

Для Windows (MSVC):

Или просто соберите определенный модуль, например, _declarative _, и модули, от которых он зависит:

*Подсказка 1: build сценарий используется для сборки всей конфигурации. Для сборки модулей из каталогов с источниками, вы можете выполнять команду make. Это тоже работает.
*Подсказка 2: jom, низкоуровневая замена nmake на Windows, она пока не правильно работает для высокоуровневых сборок. Однако, вы можете использовать его для (пере-)создания отдельных подмодулей.

Сборка QtWebKit

Linux, Mac

Для сборки потребуются инструменты bison, flex и gperf.

Windows

На сайте WebKit.org [trac.webkit.org] вы найдете инструкции для создания WebKit на Windows. Кроме того потребуются библиотеки ICU [site.icu-project.org] и phtreads-win32 [sourceware.org]. После распаковки пакета (в папку c:\phtreads), необходимо сделать следующее:

  • Добавить c:\phtreads\pthreads.2 в переменную окружения INCLUDE
  • Добавить c:\phtreads\Pre-built.2\lib\x64 или c:\phtreads\Pre-built.2\lib\x86 в переменную окружения LIB
  • Добавить c:\phtreads\Pre-built.2\dll\x64 или c:\phtreads\Pre-built.2\dllx86 в переменную окружения PATH

Инструменты bison _, _flex и gperf, которые требуются для сборки, предусмотрительно размещены в папке gnuwin32\bin.

Установка (Linux / Mac OS X)

  • Примечание: Установка будет необходима только если вы не использовали опции
    -developer-build
    
    или
    -prefix <span class="caps">PWD</span>/qtbase
    
    . В противном случае вы можете просто пользоваться Qt из каталога сборки.

Для установки, выполните

Но если вы желаете провести установку в нестандартный каталог, для того чтобы протестировать Qt5, вам необходимо описать где будет находиться каталог bin вашей установки в переменной PATH. Также вы должны или удостовериться, что не имеете переменнной среды QTDIR или опишите в этой переменной путь установки перед тем как будете выполнять make install. Например, при установке в/opt/qt5 (это предполагает, использование bash; для csh-подобных оболочек вы должны будете сначала выполнить setenv эквиваленты):

Очистка

Для получения действительно чистого дерева используйте:

с некоторых пор, confclean, больше не работает из верхнего уровня репозитария.

Получение обновлений

Чтобы обновить qt5.git репозитарий, а также подмодули до последних известных протестированных версий, выполните

Если вы планируете делать ночные сборки, рассмотрите использование сценария qt5_tool, который находится в qtrepotools/bin. Этот сценарий предоставляет возможность обновления репозитария, очистки и сборки. Например,

qt5_tool -u -c -b

может использоваться, чтобы очистить, обновить и собрать. А

qt5_tool -p -c  b

используется для того чтобы получить все головные модули и их основные ответвления.

  • Подсказка 1:
    git submodule update
    
    делает “жесткий” сброс подмодулей, потенциально избавляя от любых нежелательных изменений которые вы сделали! Если это произошло с вами (и вы не работали с персональными ответвлениями),
    git reflog
    
    , ваш друг….
  • Подсказка 2: При создании сценариев для обновлений на Windows отметьте, что
    git clean
    
    часто сбоит, если какой либо процесс блокирует файл или папку.

Использование основных ответвлений в подмодулях

По умолчанию checkout не будет содержать последние основные ответвления каждого отдельного репозитария подмодуля, но содержит комбинацию версий, которые зависят друг от друга. Если требуется получить абсолютно последний материал, можете сделать например так:

или используйте qt5_tool, чтобы обновить все репозитарии:

Однако, всегда есть шанс, что компиляция перестанет работать из-за несовместимых версий подмодулей! В таком случае, вы можете спросить у других людей, активно работающих над модулем, как разрешить эти несовместимости.

Известные проблемы

Linux

сбой конфигурации с “No QPA platform plugin enabled! “ (Linux)

Вам необходимо установить libxcb, и его зависимые пакеты, см. ‘Системные требования’.

qmlscene сообщение об ошибке “Cannot create platform GL context, none of GLX, EGL, DRI2 is enabled” (Linux)

Попытайтесь установить libx11-xcb-dev пакет:

впоследствии вы должны повторно выполнить configure qtbase/src/plugins/platforms/xcb с опцией force для перекомпиляции.

h4.WebKit не собирается при недостающем ICU

В настоящее время не конфигурируется проверка времени для ICU, так установите его через диспетчер пакетов.

для Ubuntu/Debian:

для Fedora:

Альтернативно можете собрать Qt без webkit, удалив или переименовав qtwebkit, qtwebkit-examples-and-demos каталоги. -no-webkit опция конфигуратора еще не работает: https://bugreports.qt.io/browse/QTBUG-20577

Windows

qdeclarative не компилируется из-за без вести пропавших v8.lib (Windows)

Компиляция v8 в qtbase требует Python. Удостоверьтесь что python.exe прописан в переменной окружения % PATH% перейдите в каталог qtjsbackend, выполните qmake && nmake.

Проблема с отладкой OpenGL (Windows)

Установите переменную окружения

QT_QPA_VERBOSE=gl:1

и запустите приложение с установленным DebugView [technet.microsoft.com]. Журнал покажет требуемый по сравнению с полученной версией OpenGL. Если в логах журнала обнаружится что у него только OpenGL 1.1, то QML2 не будет работать. Обратите внимание на то, что qmlscene не будет сообщать об ошибках не поддерживаемых версий OpenGL.

Вопросы и комментарии

Задавайте вопросы и пишите комментарии к этой статье на англо-язычном форуме: http://developer.qt.nokia.com/forums/viewthread/7018

Categories: