Решение.
- Перейти Проект или Цель Настройки сборки .
- Найти Путь к общей папке заголовков . (определение имени =
PUBLIC_HEADERS_FOLDER_PATH
)
- Установите его как
YourLibrary.framework/Headers
. Я использовал ${PRODUCT_NAME}.framework/Headers
для автоматической синхронизации с именем проекта.
- Перейти к Фазы сборки и найти Копировать заголовки шаг.
- Переместить все требуемые заголовки на панель Public .
Теперь все заголовочные файлы будут сформированы как Framework и скопированы в двоичный файл продукта. IDE скопирует их все как единое целое во временную папку, например, в папку сборки приложения. Таким образом, ссылка на проект приложения может автоматически использовать заголовки.
Это трюк. Созданная структура каталогов не является реальной структурой. Потому что он не содержит двоичных файлов. Однако нам не нужен реальный каркас для архивации только этой функциональности. IDE работает с фреймворками без каких-либо двоичных файлов. И я не хочу взламывать IDE без документации о внутренней структуре.
Это хорошо работает, однако у вас возникнут некоторые проблемы, когда вы Архив . Это происходит потому, что Xcode4 ведет себя особенно при архивации. Вот обходной путь.
- Для каждого проекта встроенной библиотеки
SKIP_INSTALL = YES
в настройках целевой сборки.
- Для проекта конечного продукта,
FRAMEWORK_SEARCH_PATHS = "${OBJROOT}/UninstalledProducts"
. Позаботьтесь о том, чтобы этот параметр был установлен только для Release
режима сборки.
Теперь все будет хорошо заархивировано.
В случае кроссплатформенной библиотеки может быть много проектов для многих платформ. Но когда-нибудь Xcode покажет какой-либо продукт красным цветом, даже если он успешно скомпилирован.
Это ошибка Xcode. Отображение IDE зависит от SDKROOT
из Project настройки сборки. Так что если вы установите SDKROOT
по-другому на Target , это не сработает. Вы можете проверить, что продукт станет черным после изменения SDKROOT
настройки Project . Подробности смотрите в этой записи в открытом радаре.
http://openradar.appspot.com/9636211
Если вы хотите исправить эту ошибку, сообщите об этом Радар Apple . Дублированные ошибки привлекут внимание Apple. Просто скопируйте и вставьте мой отчет:)