XCode: связывание запроса проекта - PullRequest
1 голос
/ 23 декабря 2010

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

Я безуспешно пытался сделать следующее:

  1. Перетянул-dropped SecondProject.xcodeproj и проверил SecondProject.app в качестве цели
  2. Добавил его как проект зависимостей в зависимости первого проекта
  3. Указал на файлы заголовков, добавив в «Пути поиска заголовка»путь, указывающий на второй проект, который я скопировал в подпапку первого проекта.

Когда я включаю "SecondProjectViewController.h", я не получаю ошибок, но когда я пытаюсь создать его экземпляр, я получаю "Ссылка на OBJ C от "error.

Любая помощь крайне необходима и ценится!=)

F.

Ответы [ 3 ]

3 голосов
/ 24 декабря 2010

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

Лучший способ - скомпилировать ваш первый проект в виде статической библиотеки или фреймворка.Я также рекомендовал бы убедиться, что это версия каким-то образом.Например, в моих проектах я создаю статические фреймворки и храню их в каталоге с именами «v0.0.1», «v0.0.2» и т. Д.

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

Совместное использование файлов между проектами будет работать для небольших случаев, чтоБудучи 2 или 4 проектами, но если у вас есть больше, это быстро становится неуправляемым.

1 голос
/ 24 декабря 2010

У вас есть всего несколько шагов:

4) в первом проекте щелкните треугольник раскрытия в разделе «Группы и файлы» для ссылки на второй проект.это отобразит цели Второго проекта.

5) Перетащите целевую ссылку (например, статическую библиотеку) из Второго проекта в цель в фазе связи Первого проекта.

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

Управление статическими библиотеками для огромных кодовых баз очень просто (хотя я предпочитаю сборку доминуту (а также несколько вариантов сборки) и не ссылаются на архивированные двоичные файлы, как Дерек).Обучение минимизации изменений, которые нарушают сборки, требует времени для изучения.динамические библиотеки немного отличаются - в зависимости от их распространения, вы можете захотеть версию (как обрисовал в общих чертах Дерек).Полезно поделиться, но вы должны поместить совместно экспортируемые символы в библиотеку, которая является зависимостью обоих приложений.Только будьте осторожны, чтобы не добавлять слишком много ненужных символов objc в библиотеку - символы objc и их ссылки не могут быть удалены из конечного исполняемого файла и , они вызовут конфликты во время выполнения, если они появятся в двух изображениях (dylib, app,статическая библиотека) в том же процессе.

0 голосов
/ 23 декабря 2010

Вы можете добавить файлы контроллера представления в ваш первый проект независимо от того, где они находятся на диске - проект будет ссылаться на их местоположение.

...