Два проекта в рабочих пространствах xcode4 (ошибка #import)

Я действительно пытаюсь заставить это работать в xcode 4.

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

#import "JSONRequest.h"

Без видимой причины. Он автоматически завершает имя файла заголовка. Я думал, что это имеет какое-то отношение к "схеме" (также новой в xcode 4), поэтому я попытался добавить свою сетевую цель на этапе сборки. Изменение порядка их... установите "Общий" в разделе "Схемы управления". Я пробовал так много разных комбинаций настроек без каких-либо успехов. И сообщение об ошибке получается:

JSONRequest.h: No such file or directory

Если у вас есть ключ, пожалуйста, дайте мне знать.

Ответ 1

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

  • Нажмите на цель, импортирующую JSONRequest.h.
  • Нажмите "Настройки сборки".
  • Введите "Пути поиска заголовков" в поле поиска.
  • Дважды щелкните ячейку значения.
  • Щелкните знак +.
  • Задайте путь к проекту, к которому вы обращаетесь. Скажем, это называется JSONlib. Путь относится к корню ссылающегося проекта (проект, который использует JSONlib). Например:../JSONlib/src/headers/или везде, где находится файл .h.
  • Нажмите.
  • Очистите и затем создайте.

Более подробную информацию об этой проблеме вы найдете на форумах разработчиков Apple. Удачи.

Ответ 2

Что вы действительно пытаетесь сделать?

Если у вас есть весь проект Xcode, вы намерены делиться между различными продуктами, которые обычно предполагают, что ваш проект создает одну или несколько целей (например, фреймворк и т.д.). Следовательно, ваш "общий" проект должен иметь возможность самостоятельно строить структуру независимо от рабочей области, в которой она содержится, правильно?

Предположим, что это каркас. В большинстве случаев Xcode может определить зависимость, просто добавив продукт framework к фазе сборки Link (предполагаемого) приложения, используя фреймворк. Готово. Xcode должен знать, чтобы сначала создать цель проекта каркаса, поскольку он связан с созданием целевой задачи проекта.

Итак, ваша проблема, скорее всего, связана с пониманием того, где Xcode ищет файлы. Поскольку проекты в рабочих пространствах совместно используют эту папку для создания рабочей области, они могут "видеть" друг друга. Но в случае с каркасом простой импорт по имени файла не будет сокращать его. Вам понадобится:

#import <MyNetworkingFramework/MyNetworkingFramework.h>

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

#import <MyNetworkingFramework/JSONRequest.h>

Если ваш "общий" проект не является основой, вам нужно будет изменить свой вопрос, чтобы включить более подробное описание ваших двух проектов и их целей.

Ответ 3

Это сработало для меня,

В строках Путь поиска заголовков → Добавить запись ниже

$(SRCROOT) and mark it as recursive.

Если выше не работает, вы также можете попробовать следующий путь,

<path-of-other-project> and mark it as recursive.

Надеюсь, это поможет вам! (может потребоваться очистка или перезапуск рабочей области)