четверг, 10 февраля 2011 г.

Interface Builder plugins

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

Как источник вдохновления и поиска новых интересных решений для меня является просмотр и изучения OpenSource проектов. Иммено в них я впервые увидел плагины для IB. Достаточно полезная штука, как оказалось...

Плагин представляет собой файл с расширением *.ibplugin. Для его установки в систему необходимо просто 2 раза кликнуть на него. Именно такой способ установки наткнул меня на мысль о том, что нормально компилируемый проект на моем Maс'е совсем не значит что проект успешно соберется на другом... Собрав простенький проект и при попытке скомпилировать на другом, XCode выдал ошибку Unable to resolve plug-in dependency for "MainMenu.xib". : Такое поведение нарушает один из принципов Continuous Integration. Гугл в этом вопросе мне не помог поэтому пришлось самому искать ответ. Первым делом я решил, что скорее всего пути можно прописать в самом XIB'e. Полазив по настройкам ничего подобного я не нашел. После этого я решил поискать соответствующие настройки в самом проекте.

Оказывается в настройках проекта XCoda можно найти целую секцию: Interface Builder XIB Compiler - Options которая отвечает за настройки компиляции файлов IB. И в частности нас интересует пункт Plug-In Search Paths Именно этот пункт отвечает за директорию в которой искать плагины. По этому для себя я определил структуру проекта: в корне проекта у меня находится папочка 3rdparty, в которой хранятся все сторонние библиотеки используемые в проекте. В папочке 3rdparty находится подпапочка binaries, которая в частности отвечает за бинарные данные т.е. статические динамические библиотеки, плагины и т.д. Тогда путь к библиотекам и плагинам будет достаточно простой: $(SRCROOT)/3rd_party/binaries