Swift Framework: Umbrella header' [...].ч' не найден
в пользовательской структуре, содержащей оба С и Свифт код, компилятор Swift выдает следующую ошибку:
[build_path]/unextended-module.modulemap:2:19: error: umbrella header 'bugtest.h' not found
umbrella header "bugtest.h"
^
<unknown>:0: error: could not build Objective-C module 'bugtest'
16 ответов:
в Xcode 7 Beta, с Swift2, это также произойдет, если ваш заголовок фреймворка не объявлен как "Public"
например, у меня была платформа Cocoa Touch с видимостью "Project" для файла заголовка и ошибкой "Umbrella Header ... не найдено "для всех файлов swift в моем проекте, как только у меня появился заголовок" Public", ошибка исчезла
есть 4 различных способа это может произойти, игнорируя ошибки в предыдущих версиях Xcode
- у вас нет заголовка зонтика с именем $(TARGET_NAME).H в вашем проекте
- у вас есть заголовок зонтика, но он не установлен как публичный. смотрите ответ артургригора
DEFINES_MODULE
не установленоYES
CLANG_ENABLE_MODULES
не установленоYES
Это произошло, когда
Always Search User Paths
настройка включена для целевого объекта Framework.установка
No
разрешит эту ошибку.IMHO это ошибка в компиляторе Swift, и я подал радар с Apple.
Смотрите rdar://21038443
для меня-уровень доступа был публичным, но он также не работает на зонтике не найден. Я переместил раздел "заголовки" из "этапов сборки" наверх, и он начал работать. Скрипт для подфайла:
post_install do |installer| installer.pods_project.targets.each do |target| phase_name = 'Headers' target.build_phases.each do |phase| if (phase.display_name.include? phase_name) target.build_phases.unshift(phase).uniq! unless target.build_phases.first == phase end end end
понятия не имею, почему это происходит. Пробовал на фиктивных проектах-не получилось. Только на больших с несколькими зависимостями. Что-то с компиляцией перед копированием заголовков зонтика.
еще одно решение: после переименования папки старое расположение может быть по-прежнему указано в файле проекта .H-файл, даже если вы обновили местоположение через боковую панель Xcode. Это старое расположение вызывает ошибку заголовка зонтика.
простое решение: удалите ссылку на .H-файл, и заново добавить. (а потом не забудьте сделать это снова публично!)
здесь уже есть отличные ответы. @Shadow_x99 был очень полезным. Однако, если бы мне было позволено дополнить мой собственный опыт.
заголовок зонтика определяется автоматически в процессе сборки. он не указан в настройках сборки цели или унаследован от настроек проекта.
поэтому, чтобы избежать этой ошибки, что - начиная с XCode 7 - это следующим образом:
warning: no umbrella header found for target 'MyTarget', module map will not be generated
два необходимо предпринять важные шаги.
во-первых, заголовок зонт должен иметь то же имя, что и цель. Поэтому, если ваша цель-это фреймворк с именем
MyTarget
, там должен быть заголовок с названиемMyTarget.h
.во-вторых, на этапах построения
MyTarget
- Как уже упоминалось в этом ответе-этот файл заголовка должен быть указан в открытый раздел как описано выше.
Я только что столкнулся с этим снова. На этот раз мне удалось заставить все работать, создав структуру проблемы (на скриншоте она называется "RangeMap") независимо.
Если Xcode не перечисляет схему для вашей структуры проблем в раскрывающемся списке, перейдите к" Product -> Scheme -> ManageSchemes "и проверьте" Show."
после этого Xcode снова смог построить мой основной проект.
У меня была та же проблема, и ни один из предложенных ответов не помог в моем случае, поэтому я оставляю это здесь, Если у кого-то есть такая же проблема.
Я добавил "скрипт запуска" в "фазах сборки", но в конечном итоге удалил его, и именно тогда я начал получать ошибку.
мое решение закончилось тем, что мне пришлось очистить проект, перестроить мою структуру, а затем мой проект приложения был построен правильно.
Если вы используете Xcode 7.1 и CocoaPods 0.39, похоже, есть быстрое изменение компилятора, которое влияет на некоторые CocoaPods (Nimble, Quick и т. д.) Попробуйте некоторые из решений, указанных в этом потоке:https://github.com/CocoaPods/CocoaPods/issues/4420 однако, если ни один из них не работает, попробуйте использовать Xcode 7.0.1 или 7.2 beta. Вы можете получить их обоих здесь:https://developer.apple.com/downloads/.
Edit: в моем случае, чтобы исправить проблему, мне также пришлось понизьте рейтинг CocoaPods до 0.38.2.
позднее редактирование: похоже, это не связано с Xcode 7.1. Просто понижение CocoaPods до 0.38.2 должно помочь:
sudo gem uninstall cocoapods -v 0.39 sudo gem install cocoapods -v 0.38.2
ваш файл заголовка должен быть в разделе [Build Phases/Headers/Public].
Если ваш заголовочный файл уже находится в разделе [Build Phases / Headers / Public], много раз выполнение паров решило мою проблему:
- очистить проект
- переместите файл заголовка в раздел" private "или" project"
- переместить файл заголовка обратно в раздел "public"
- снова все восстанавливать.
удалите эти файлы из каталога проекта.
.xcworkspace
pods/
иpodfile.lock
обновить модуль и построить проект.
ни один из 9 ответов помог мне, поэтому я попытался создать новый проект, который я мог бы отправить для файл ошибка. Я был удивлен, что не смог воспроизвести проблему. Я проверил настройки сборки, и они были эквивалентны. Видимо, это какая-то ошибка.
Если ничто другое не помогает, попробуйте создать новый проект и импортировать хотя бы некоторые классы Objective C & Swift из текущего проекта, сравните настройки сборки, связанные с платформой, со значениями по умолчанию из нового проекта, и в конечном итоге переместить все файлы в новый проект.
Я работал над этим целый день, но оно того стоит.Я перепробовал все способы здесь но я его не решал. Я создал новый проект, эксперимент, и я узнал Путь Поиска Заголовка Пользователя был установлен ${SRCROOT} рекурсивный, и я изменил его на ${SRCROOT} нерекурсивный, изменил путь заголовка моста(например
#import "SVProgressHUD.h"
->#import "Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h"
), ошибка ушла.