суббота, 28 ноября 2009 г.

Сборка Qt Creator из исходников

На выходных решил посмотреть свежайший Qt Creator. Не тот, который 1.3-RC1 (т.е. 1.2.94), и не тот который можно найти в Qt Creator snapshots (1.3.0), а тот, который можно собрать из официального репозитория (1.3.80). Мимоходом замечу, что 1.3-RC1 отличается от свежака на 86 (!) ревизий. Такое впечатление, что за официальным 1.3 сразу выйдет beta 1.4.

Похоже, однако, что копают больше вглубь, чем вширь. Что видно сразу: в master branch добавили плагин для Mecurial. И все.

Однако, вернемся к предмету разговора. Итак, что нужно, чтобы получить 1.3.80? Нужно всего ничего:
1. Установить git.
2. Склонировать исходники Qt Creator из репозитория.
3. Собрать Qt Creator.

Ну и еще куча времени, потому как билд от 28.11.09 не особенно хочет работать под Windows. Об этом ниже.

1. Установка git.

Установка из исходников или бинарников для разных систем отлично описана, в том числе и по-русски, в книжке про git, см. главу 1.4. В главе 1.5 рассказано как нужно сконфигурировать git сразу после установки, т.е. задать имя пользователя и пр.

Вкратце, я делал вот так:

Под Ubuntu:
$ sudo apt-get install git-core

Под Windows нам нужен msysGit, живет он на Google Code. Не знаю, есть ли другие порты git'a для Windows, но этот сделан что-то уж чересчур сердито. Скачиваем и устанавливаем последнюю версию msysGit (на момент написания- 1.6.5.1) отсюда.

После установки нужно задать имя, мэйл, редактор и инструмент merge. Под Windows все делается все равно из-под bash, так что синтаксис одинаковый:
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
$ git config --global core.editor notepad
$ git config --global merge.tool kdiff3

Проверка установок:
$ git config --list

2. Клонирование исходников из репозитория.

После того, как установка git завершена, заходим в директорию, где будет создана директория qt-creator и клонируем проект с сайта троллей:
$ cd /Projects
$ git clone git://gitorious.org/qt-creator/qt-creator.git

На будущее, если нам нужно достать последние обновления Qt Creator, делаем
$ git fetch

Отмечу, что fetch не делает merge автоматически. Если что-то меняли локально, надо делать pull.

3. Сборка Qt Creator.

Я собирал из-под Qt Creator 1.3-RC1 с Qt 4.6-RC1.

3.1. Под Ubuntu.

Под Ubuntu все оказалось просто. Ну, почти. :-) Запускаем Qt Creator 1.3-RC1, открываем проект /Projects/qt-creator/qtcreator.pro, выбираем Build->Set build configuration Release (или Debug), Build->Set run configuration qtcreator(bin).

Проект компилируется с восемью ворнингами, что совсем неплохо. Выходим из Qt Creator 1.3-RC1. Запускаем ./Projects/qt-creator/bin/qtcreator.bin и получаем сообщение о том что /plugins/Nokia/libQtScriptEditor.so: The shared library was not found.

Понятно, что что-то не так в зависимостях, и надо собрать плагины явно. Запускаем Qt Creator 1.3-RC1, открываем проект /Projects/qt-creator/src/libs/libs.pro, собираем. Не забываем про Build->Set build configuration Release (или Debug). Аналогично собираем /Projects/qt-creator/src/plugins/plugins.pro. Все! Закрываем Qt Creator 1.3-RC1 и запускаем только что собранный 1.3.80.

Я его толком не пользовал, но проекты в нем запускаются. Отладкой не занимался.

3.2. Под Windows.

Для Windows, если хотим использовать MSVC, надо скачать Qt, собранную под MSVC 2008. Ну, или пересобрать самим.

Запускаем Qt Creator 1.3-RC1, открываем проект d:/Projects/qt-creator/qtcreator.pro. Запускаем Build->Build Project. У меня сборка заняла 40 минут.

Запускаем 1.3.80, получаем вот такое сообщение:




В директорию qt-creator/bin надо скопировать вот эти Qt библиотеки:
QtCLucene4.dll
QtCore4.dll
QtDesigner4.dll
QtDesignerComponents4.dll
QtGui4.dll
QtHelp4.dll
QtNetwork4.dll
QtScript4.dll
QtSql4.dll
QtWebKit4.dll
QtXml4.dll
QtXmlPatterns4.dll

Копируем, запускаем по новой, получаем вот что:



Как с этим бороться я знаю- надо дебажить, смотреть, что же там такое вызывается. Но- в лом, да и времени нет. Скорее всего и так пофиксят не сегодня-завтра.

UPD: Все вылечилось добавлением Qt 4.6.0, собранной под MSVC, в переменную PATH, т.e.
PATH=...;d:\Qt\4.6.0\bin;

Qt Creator 1.3.80 теперь запускается без каких-либо жалоб, проекты открываются и т.п. Осталось неясным, что же было сломано в Qt 4.6-RC1. К тому же, вот здесь обсуждалась сходная проблема со сборкой Qt Creator 1.3.0, правда не написано, как она была решена.

Заключение.

Понятно, что попробовать самое свежее хочется всегда. Надо только соразмерять затраты времени с возможным результатом. В случае с 1.3.80 я и не знаю, стоит ли сейчас прям так уж упираться. Тем более, что есть пара невыясненных вопросов.

Весь Qt Creator- это несколько больше, чем то, что можно собрать из репов. К примеру, нету jom. Кто знает, чего еще не хватает для нормальной работы, и чего нет в исходниках. Я погуглил в поисках описалова как делать ежедневные билды (1.3.0 на текущий момент), но безрезультатно. А в них ведь есть абсолютно все, что и RC1.

Также, билд может быть сломан, не на одной платформе, так на другой. Так что, кто знает, сколько времени на сборку уйдет, это ж лотерея.

Я напишу в Qt Creator мэйллист узнать что это за функция такая в Core.dll или что я там при сборке накосячил.

UPD: Мне ответили, что в переменной PATH надо указать путь к библиотеке, но он там и так уже был:
PATH=...;d:\Qt\4.6.0-rc1\;

Также, посоветовали поиграться с утилитой с названием depends_x86 или похожим, которая проверяет зависимости.

Проблема решилась сама собой после установки Qt 4.6.0 и добавлением ее в PATH (см. UPD выше).

Комментариев нет:

Отправить комментарий