Я работаю над проектом приложения для iOS и добавляю проект json-framework в рабочую область. Навигатор проектов слева показывает оба проекта, а селектор схемы сборки также показывает схемы из обоих проектов. Теперь я хочу добавить цель libjson.a из проекта json-framework в качестве зависимости от цели приложения iOS в другом проекте. Ожидаемый результат заключается в том, что всякий раз, когда целевое приложение создается, оно создает (при необходимости) целевую библиотеку и связывает с ней целевое приложение. Вот способы, которыми я пытался это сделать:
Постройте оба как часть одной и той же схемы. Я пытаюсь отредактировать схему для своего приложения, добавив «libjson.a» в часть «Сборка» схемы, и, кстати, проверить «Найти неявные зависимости». Затем я перехожу к целевому редактору для своего целевого приложения и в «Этапах сборки» -> «Связать двоичный файл с библиотеками» я выбираю «libjson.a» из списка библиотек рабочей области. Когда я впоследствии пытаюсь построить схему, я вижу, что она создает целевую библиотеку, но создание целевого приложения завершается с ошибкой компоновщика «Библиотека не найдена для -ljson», предполагая, что на самом деле она не обнаружила, что библиотека была построена. Действительно, в навигаторе проекта запись под проектом приложения для библиотеки по-прежнему красная, указывая на то, что файл не существует.
Добавьте цель json в качестве явной зависимости. Чтобы попробовать это, я не изменяю схему сборки, а иду в целевой редактор для моего целевого приложения и нажимаю кнопку добавления в разделе «Целевые зависимости». Цели из других проектов в рабочей области не отображаются, так что это не начало.
Перетащите проект JSON в другой проект, затем добавьте цель в качестве зависимости. Это то, что я сделал бы в Xcode 3. В навигаторе проекта я беру проект библиотеки и перетаскиваю его поверх проекта приложения. Это вызывает обычную панель «Добавить файлы», которую я просто закрываю, нажимая «Готово». Теперь в навигаторе проектов есть две записи для проекта библиотеки: одна на верхнем уровне и одна под проектом приложения. Теперь я могу добавить целевую библиотеку в качестве зависимости от целевого приложения с помощью целевого редактора и могу связать ее без ошибок на этапе связывания библиотек. Но он выглядит сломанным: в навигаторе есть несколько записей для одного и того же проекта. Есть ли другой способ сделать это?
Что следует считать "Xcode 4-ish" способом подключения этих целей в разных проектах в одном рабочем пространстве? Казалось бы, чего не хватает, если несколько проектов в одном рабочем пространстве не могут на самом деле взаимодействовать друг с другом. Спасибо, Грэм.