В статье я попытаюсь рассказать, что успел понять за неделю общения с 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 && cd qutim-dev git clone git://gitorious.org/qutim/qutim.git cd qutim git checkout origin/sdk02 Создаем папку plugins, качаем туда нужные протоколы: icq, jabber, mrim mkdir plugins && 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/