В статье я попытаюсь рассказать, что успел понять за неделю общения с Mac OS и компиляцией проектов под нее. Прошу заметить, что ничего из написанного не предендует на абсолютную правильность, более того, я уверен, что часть вещей можно сделать проще и по-другому. Просьба внимательно ознакомиться с <strong>P.S.</strong> который идет ниже всего текста.

Подготовка.

Ну что ж, мой дорогой друг. Если ты и вправду решил проклевать себе мозг, но своими руками собрать qutim (и пару-тройку плагинов) для него, я попробую рассказать как это делается. Не буду долго описывать свой путь, установку macports для поднятия git, трех пересборок qt-4.6 и т.п., а постараюсь перейти к сути и вкратце. Сразу же пару слов скажу касательно методов сборки, их два:

Разница тут следующая: ставя бинарнный пакет (п.1) никаких более плясок не потребуется, только сборка проекта. Но попытавшись отдать кому-либо скомпилированный проект (речь сейчас только про Qt), того человека постигнет разочарование: программа не запустится, т.к. будет искать Qt-Framwork'и в папке /Library/Frameworks , а их, естественно, там не окажется. Ставя пакет исходников, вам будет необходимо скомпилировать (собрать) его указав требуемые параметры, и после этого, используя утилиту install_name_tool, указать исполняемому файлу и библиотекам, где искать Framework-и.

В общем, что нам нужно:

Сам процесс.

1. Ставим пакет Xcode 2. Если не хотим париться с git и скачиванием сырцов, смотрим в п.6 3. Ставим macports 4. Запускаем консоль, пишем “sudo port install git-core” жмакаем enter, ждем. 5. Мануал по скачиванию сорцов из git Работаем через консоль:

Создаем папку для qutim, качаем туда сорцы из ветки sdk02
mkdir qutim-dev &amp;&amp; cd qutim-dev
git clone git://gitorious.org/qutim/qutim.git
cd qutim
git checkout origin/sdk02
Создаем папку plugins, качаем туда нужные протоколы: icq, jabber, mrim
mkdir plugins &amp;&amp; cd plugins
git clone git://gitorious.org/qutim/oscar.git
cd oscar
git checkout origin/sdk02
cd ..
git clone git://gitorious.org/qutim/jabber.git
cd jabber
git checkout origin/sdk02
cd ..
git clone git://gitorious.org/qutim/mrim.git
cd mrim
git checkout origin/sdk02
cd ..
На этом все. Если нужно что-то дополнительное - качайте сами, не забывайте про checkout origin/sdk02
Далее пункт 8.

6. Идем на http://gitorious.org/qutim выкачиваем оттуда сам qutim и выкачиваем плагины по необходимости: oscar (icq), jabber, mail.ru im, vkontakte. Для этого заходим в раздел qutim (сделаем на его примере) ищем в заголовке sdk02, жмем на него, и в правой части “Download sdk02 as tar.gz”, сохраняем. Проделываем подобное для всего остального.

7. Распаковываем все, что скачали. можно через Finder, можно поставить MidnightCommander из macports. Для удобства, я создал папку в корне второго диска, и распаковал туда qutim, а внутри папки уже создал plugins, и распаковал туда плагины.

8. Далее, нам нужно поставить, либо собрать Qt-4.6. Ставить просто: монтируем dmg-образ, ставим. Как собирать - ниже.

Мануал по сборке Qt-4.6 Очень рекомендую сразу же обратиться к “родной” документации по сборке Qt на их сайте http://doc.qt.nokia.com/4.6/install-mac.html. Если вкратце - то ниже.

9.Если вы все же дошли до этого момента, могу поздравить. После того, как мы установили/собрали Qt-4.6, самая пора начать собирать qutim. Я обычно начинаю сборку с плагинов.

10. Заходим в папку qutim/plugins/qutim-jabber/ (если качал через git - то qutim/plugins/jabber/) , создаем папку build, идем в нее. запускаем “cmake .. -DCMAKE_BUILD_TYPE=Release”, ждем окончания процесса. После этого запускаем “make -j5”. Немного внимания следует уделить параметру -j. Его я выставляю по кол-ву ядер процессора +1, где-то читал мнение, что нужно выставлять параметр -j по кол-во ядер*2. “Думайте сами, решайте сами” (с). Во время компиляции на warnings не обращаем внимания, а вот error не дадут скомпилироваться проекту. Нужно очень внимательно смотреть в чем именно ошибка, и пытаться исправить ее, либо обратиться на форум разработчиков. Но, при правильном выполнении ошибки возникнут немного позже, и я напишу как их исправить. Поздравляю, jabber-плагин мы собрали, пока оставляем его.

11. Заходим в папку qutim-mrim (если исходники брались через git - то просто mrim), и полностью повторяем п.9.

12. Идем в папку qutim-oscar (либо просто oscar), запускаем “qmake”.  Здесь важно помнить, что при использовании бинарного qt-4.6, после запуска qmake нужно выполнить “open icq.xcodeproj”, дождаться, пока запуститься Xcode, выбрать в выпадающем меню релиз SDK10.6, Release, x64. После этого в верхнем меню Build выбрать “build” и ждать. По идее, будет штук 40 warning-ов, и не одной error. Опять же, если возникают error, нужно смотреть почему. Если Qt-4.6 собирали сами, то делается все проще: запускается qmake, после него make-j5, и ждать окончания.

13. Если плагины все же собрались нормально, можно приступить к сборке ядра, только сначала кое-что подправим. Переходим в /qutim/src открываем systeminfo.cpp, спускаемся до 227-й строчки, и вместо “long” пишем “SInt32”, что бы получилась такая строка 

SInt32 minor_version, major_version, bug_fix;

после этого сохраняемся, выходим из src, создаем папку build и заходим в нее. И повторяем пункт 9.

14. Перекур.

15. После всего проделанного, необходимо зайти в qutim.app/Contents/MacOs/ создать папку Plugins и закинуть туда три, или сколько нужно, собранных плагинов. поднимаемся наверх, и пытаемся запустить ./qutim  Смотрим за выводом скрестив пальцы.

16. В общем-то, сборка “для себя” закончена. Можно радостно юзать собранный своими руками последний qutim.

17. Про сборку для “друзей” я расскажу позже.

P.S. Прошу внимательно прочитать все сказанное ниже, чем писать комменты, что ничего не получилось и я, лошара, криво что-то написал.

Оригинал http://roman.terekhov.su/2010/01/19/qutim-0-2-sborka-pod-mac-os-10-6-x-2/

/home/qutim/data/www/wiki.qutim.org/data/pages/ru/building_for_mac.txt · Last modified: 2010/02/04 02:00 (external edit)
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki