Какой простой способ управлять исходными файлами, которые используются в разных проектах XCode? - PullRequest
3 голосов
/ 03 сентября 2010

Я углубляюсь в разработку под iOS и планирую создать несколько базовых приложений, использующих мой собственный повторно используемый код. Когда я обновляю файлы, содержащие мой повторно используемый код, я хотел бы, чтобы эти обновления были отражены во всех проектах Xcode, которые их используют. Как я могу это сделать?

Заранее спасибо за помощь!

Ответы [ 5 ]

4 голосов
/ 03 сентября 2010

Есть несколько способов сделать это.

Если ваш «повторно используемый код» разделен на библиотеки, вы можете упаковать его в отдельные проекты (которые компилируются в статические библиотеки), а затем связать их с вашим основным проектом (который компилируется в исполняемый файл). Немного сложно, но это "правильный" способ. (Не такой гибкий и простой, как парадигма решения / проекта Visual Studio, но это напыщенная речь на следующий день.)

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

Я сделал все три.

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

1 голос
/ 08 ноября 2011

Создайте проект статической библиотеки, затем используйте функцию межпроектной зависимости Xcode, чтобы построить их в правильном порядке и связать приложение со статической библиотекой

1 голос
/ 06 ноября 2010

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

0 голосов
/ 06 ноября 2010

правильный способ - создать библиотеку. в iOS вы ограничены статическими библиотеками, но другие распространенные возможности - динамические библиотеки и платформы (например, если вы ориентируетесь на OS X).

для настройки этого (используя libStatic в качестве имени для статической библиотеки и приложение в качестве приложения в этом примере):

1) создайте проект libStatic и настройте его для компиляции выбранных вами файлов

2) добавить libStatic.xcodeproj в App.xcodeproj. это добавляет символы проекта, индексы и ссылки на проект приложения.

(все остальные шаги выполняются в App.xcodeproj)

3) дважды щелкните по цели, которая зависит от liStatic

4) перейдите на вкладку Общие

5) нажмите «+» под списком зависимостей и добавьте цель libStatic в зависимости. важно, чтобы вы создали эту ассоциацию / зависимость, чтобы цель libStatic была обновлена ​​по мере разработки в приложении (она будет создана до приложения).

6) перейдите к ссылке на проект libStatic в дереве групп и файлов. при необходимости щелкните (разверните) треугольник раскрытия, чтобы просмотреть продукты libStatic.

7) перетащите соответствующий продукт из ссылки на проект libStatic в стадию связи с целью приложения.

8) очистить, собрать, запустить

0 голосов
/ 03 сентября 2010

Единственное решение, о котором я подумал, - это создать проект статической библиотеки, но использовать его только для проверки компиляции повторно используемого кода в этой библиотеке. Затем вставьте символическую подкаталог исходного кода этого библиотечного проекта во все остальные проекты, использующие этот код. Таким образом, весь исходный код доступен в любом проекте, и любые изменения, которые я внесу в повторно используемый код, будут немедленно отражены везде (без шага копирования). И, конечно же, используйте хорошую методологию контроля версий исходного кода в этом подкаталоге, чтобы я мог создавать версии, сравнивать изменения, возвращать и т. Д.

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