два проекта в рабочих пространствах xcode4 (ошибка #import) - PullRequest
11 голосов
/ 11 марта 2011

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

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

#import "JSONRequest.h"

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

JSONRequest.h: No such file or directory

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

Ответы [ 3 ]

10 голосов
/ 31 марта 2011

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

  1. Нажмите на цель, которая импортирует JSONRequest.h.
  2. Нажмите на параметры сборки.
  3. Введите «Пути поиска по заголовкам» в поле поиска.
  4. Дважды щелкните ячейку значения.
  5. Нажмите знак +.
  6. Укажите путь к проекту, на который вы ссылаетесь.Допустим, это называется JSONlib.Путь указывается относительно корня ссылающегося проекта (проекта, использующего JSONlib).Например: ../JSONlib/src/headers/ или где-нибудь еще, где находится файл .h.
  7. Нажмите «Готово».
  8. Очистите, а затем соберите.

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

6 голосов
/ 18 марта 2011

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

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

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

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

#import <MyNetworkingFramework/MyNetworkingFramework.h>

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

#import <MyNetworkingFramework/JSONRequest.h>

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

1 голос
/ 02 октября 2014

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

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

$(SRCROOT) and mark it as recursive.

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

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

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

...