Как работать над приложением Какао и плагинами параллельно? - PullRequest
3 голосов
/ 04 января 2010

У меня относительно простая цель: я хочу создать приложение Cocoa, которое само по себе не обладает большой функциональностью, но расширяется с помощью плагинов. Кроме того, я хочу поработать над несколькими плагинами, чтобы предоставить пользователям реальную функциональность (и рабочие примеры).

Поскольку я планирую сделать приложение и каждый плагин отдельными проектами с открытым исходным кодом (и Git-репозиториями), сейчас я ищу лучший способ упорядочить свои файлы и проекты Xcode. Я не очень разбираюсь в Xcode и сейчас не вижу простого способа заставить его работать без копирования файлов после сборки.

Это простая монолитная установка, которую я использовал для разработки до сих пор: Есть только один проект Xcode с несколькими продуктами:

  • Основное применение
  • Фреймворк для разработки плагинов
  • Несколько пакетов плагинов

То, что я ищу, это удобный способ разделить их на несколько проектов Xcode (один для приложения и фреймворка) и один для каждого плагина. Поскольку мое приложение все еще находится на ранней стадии разработки, я все еще изменяю многое как в приложении, так и в плагинах. Поэтому под «1015 *» «удобными» я подразумеваю то, что я не хочу копировать файлы вручную или создавать подобные неудобства.

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

Одно возможное решение, которое я имею в виду, - это скопировать оба (плагины и фреймворк) в «Фазе копирования файлов» в известное место, например. /tmp/development, поэтому файлы для производства и разработки не перепутаны.

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

1 Ответ

4 голосов
/ 04 января 2010

Во-первых, не используйте статическое «известное местоположение», как вы упомянули. Я работал в таком проекте; это королевская боль. Как только вы дойдете до того, что вам понадобится пара разных копий проекта (для параллельного исправления ошибок, для тестирования «чистой» сборки по сравнению с вашими последними изменениями, для работы с несколькими ветвями), сборки начинают перебирать каждую другие, и вы обнаружите, что вам нужно делать полностью чистую / сборку гораздо чаще, чем вы хотите.

Вы можете создать зависимости между проектами, добавив зависимый проект (Добавить файл), щелкните правой кнопкой мыши на Target и выберите «Get Info», а затем добавьте прямую зависимость на панели General.

С точки зрения структуры, вы можете либо объединить основное приложение и инфраструктуру, либо поместить их в отдельные проекты. В любом случае я рекомендую дерево каталогов, например:

/MyProject
    /Framework
    /Application
    /Plugins
        /Plugin1
        /Plugin2

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

Вы также можете взглянуть на скрипт сборки верхнего уровня, который изменяется в каждом каталоге и запускает "xcodebuild". Мне не нравятся сложные сценарии сборки (у нас есть один; он называется Xcode), но если все, что он делает, это при необходимости вызывает xcodebuild с параметрами, тогда полезен простой сценарий сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...