Я разделяю проект Xcode iPhone на несколько небольших проектов для повторного использования кода.
Структура выглядит так:
+------------+
| App |
+------------+
|
+------------------+
| |
+--------------+ +--------------+
| Static Lib A | | Static Lib B |
+--------------+ +--------------+
| |
+----------------+
|
+--------------+ +----------------+
| Static Lib Z |--| Static Lib KAL |
+--------------+ +----------------+
Все компилируется правильно, но как только приложение связано, компоновщик не может найти 2 символа библиотеки KAL (lib с открытым исходным кодом).
Каждая библиотека имеет перекрестную ссылку, и все архивы добавляются на этапе сборки «Связать двоичные файлы с библиотеками».
Ошибки:
Неопределенные символы:
"_OBJC_CLASS _ $ _ KalViewController", ссылка с которого:
objc-class-ref-to-KalViewController в libA.a (AViewController.o)
"_OBJC_CLASS _ $ _ KalDate", ссылка с которого:
objc-class-ref-to-KalDate в libA.a (AViewController.o)
ld: символ (ы) не найдены
collect2: ld вернул 1 статус выхода
Я использую класс из LibZ в Libiew AViewController, который, в свою очередь, использует класс в LibKAL.
PS: разделение A и B происходит просто потому, что не каждая сборка приложения нуждается в функциональности, предоставляемой этими двумя.