답변:
이것은 일반적으로 프로젝트 이름 변경 또는 이와 유사한 후에 발생합니다. 문제는 우산 헤더가 더 이상 공용 헤더 로 나열되지 않는다는 것 입니다. 이 문제를 해결하려면 첨부 된 이미지를 확인하십시오.
Xcode 7 베타에서는 Swift 2와 함께 프레임 워크 헤더가 "공개"로 선언되지 않은 경우에도 발생합니다.
예를 들어, 헤더 파일에 대한 "프로젝트"가시성을 가진 Cocoa Touch Framework가 있었고, "공개"헤더가 있으면 프로젝트의 모든 Swift 파일에 대해 "우산 헤더 ... 찾을 수 없음"오류가 발생했습니다. 오류가 사라졌습니다
Xcode 이전 버전의 버그를 무시하고 이런 일이 발생할 수있는 4 가지 방법이 있습니다.
DEFINES_MODULE
로 설정되지 않음 YES
CLANG_ENABLE_MODULES
로 설정되지 않음 YES
이것은 Always Search User Paths
프레임 워크 대상에 대한 설정이 활성화 된 .
로 설정하면 No
해당 오류가 해결됩니다.
IMHO 이것은 Swift Compiler의 버그이며 Apple에 레이더를 제출했습니다. rdar를
참조하십시오 .
나를 위해-액세스 수준이 공개되었지만 우산을 찾을 수 없음에서도 실패합니다. "빌드 단계"의 "헤더"섹션을 맨 위로 이동했고 작동하기 시작했습니다. podfile에 대한 스크립트 :
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
왜 그런 일이 일어나는지 전혀 모릅니다. 더미 프로젝트를 시도했지만 발생하지 않았습니다. 여러 종속성이있는 큰 경우에만. 우산 헤더를 복사하기 전에 컴파일하는 것이 있습니다.
Podfile
파일 : 구문 오류, 예기치 않은 입력 끝, keyword_end 예상.
나를 위해 '헤더 맵 사용'을 '아니요'로 설정하면 문제가 해결되었습니다.
New Swift Build System과 Parallelize Build가 구성표를 켜면이 질문과 같은 오류가 발생한다는 것을 알았습니다. 해결책은 신속한 소스 파일로 가져온 프레임 워크에 연결하는 것이 었습니다. (이전에 프레임 워크가 직렬 빌드 대기열에서 이전에 빌드 된 항목에 링크되어 있기 때문에 이전에 앱이 빌드 될 것이라고 생각합니다.)
작업 영역의 모든 대상에서 모든 가져 오기를 수행하고 해당 프레임 워크가 해당 대상에 연결되었는지 확인하는 스크립트를 작성했습니다.
이미 여기에 훌륭한 답변이 있습니다. @ Shadow_x99는 매우 도움이되었습니다. 그러나 내 경험을 보완 할 수 있다면.
우산 헤더는 빌드 프로세스에서 자동으로 식별됩니다. 대상의 빌드 설정에 지정되지 않았거나 프로젝트 설정에서 상속되지 않았습니다.
따라서이 오류를 방지하려면 -XCode 7 기준 -다음과 같습니다.
warning: no umbrella header found for target 'MyTarget', module map will not be generated
두 가지 중요한 단계를 거쳐야합니다.
첫째, 우산 헤더는 target과 동일한 이름을 가져야 합니다 . 따라서 대상이라는 프레임 워크 인 경우라는 MyTarget
헤더가 있어야합니다.MyTarget.h
.
둘째, MyTarget
해당 답변에서 언급했듯이에 대한 빌드 단계 에서 해당 헤더 파일은 위에서 설명한대로 공개 섹션에 나열되어야합니다 .
Xcode 7.1 및 CocoaPods 0.39를 사용하는 경우 일부 CocoaPods (Nimble, Quick 등)에 영향을 미치는 신속한 컴파일러 변경이있는 것 같습니다.이 스레드에 지정된 몇 가지 솔루션을 사용해보십시오. https://github.com/ CocoaPods / CocoaPods / issues / 4420 그러나 둘 다 작동하지 않으면 Xcode 7.0.1 또는 7.2 베타를 사용해보십시오. 두 가지 모두 https://developer.apple.com/downloads/ 에서 얻을 수 있습니다 .
편집 : 제 경우에는 문제를 해결하기 위해 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] 섹션에있는 경우 다음과 같이 여러 번 fallowing을 수행하여 문제를 해결했습니다.
내 module.modulemap의 이름을 moduleXYZ.modulemap으로 바꾸고 프로젝트 설정에서 modulemap 파일 이름을 변경하여이 문제를 해결했습니다.
9 개의 답변 중 어느 것도 도움이되지 않았기 때문에 버그를 신고하기 위해 Apple에 보낼 수있는 새 프로젝트를 만들려고했습니다. 문제를 재현 할 수 없다는 사실에 놀랐습니다. 빌드 설정을 확인한 결과 동일했습니다. 분명히 이것은 일종의 버그입니다.
다른 방법이 도움이되지 않으면 새 프로젝트를 만들고 현재 프로젝트에서 Objective C 및 Swift 클래스를 가져오고 프레임 워크 관련 빌드 설정을 새 프로젝트의 기본값과 비교 한 다음 결국 모든 파일을 새 프로젝트.
하루 종일 작업을 해왔지만 그만한 가치가 있습니다. 여기서 모든 방법을 시도했지만 해결하지 못했습니다. 나는 새로운 프로젝트, 실험을 만들었고 User Header Search Path 가 $ {SRCROOT} recursive 로 설정되었고 그것을 $ {SRCROOT} non-recursive 로 변경하고 브리징 헤더 경로 (예 : #import "SVProgressHUD.h"
-> #import "Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h"
)를 변경했습니다. 오류가 사라졌습니다.