Xcode 9 - 无法发出预编译头

时间:2017-09-19 06:08:44

标签: ios objective-c swift xcode xcode9

我在Objective-C和swift中都有一个项目,只需要MyProjectName-Bridging-Header.h,我也配置了Objective-C Bridging Header。 我还添加了' MyprojectName-Swift.h'在.pch文件中。

这在xcode 8.2上运行正常但是当我从xcode 9构建我的项目时,我得到以下错误。

  

无法发出预编译的标头   ' /Library/Developer/Xcode/DerivedData/MyprojectName-lajanjvhqjnfjksdsndsfkads/Build/Intermediates.noindex/PrecompiledHeaders/MyprojectName-Bridging-Header-swift_44AHJm3Z96qu-clang_2BIMGQVXGEZ09.pch'   用于桥接标题   ' /Documents/MyProjectLocaiton/FoneApp-Bridging-Header.h'

请帮帮我。谢谢!

12 个答案:

答案 0 :(得分:13)

如果您在项目中使用cocoapods,请阅读此内容。 在更新pod和xcode使第一次构建成功后,我只是将部署目标更新到iOS 10或11。所以问题出在podfile里面,我有行

platform :ios, '11.0'

我在项目中的部署目标是9.0 将我的podfile更改为平台后

platform :ios, '9.0'

项目已修复。

答案 1 :(得分:9)

最后我得到了这个问题的解决方案。 在我的项目中,Prefix Header路径没有明确定义。之前的道路是

  

$(SRCROOT)/MyPrefixHeaderFile.pch

MyPrefixHeaderFile.pch位于项目文件夹中的另一个文件夹中,所以我将Prefix Header路径更新为

  

$(SRCROOT)/FolderName/MyPrefixHeaderFile.pch

答案 2 :(得分:7)

还要确保导入" ProductModuleName-Swift.h"在你的.m文件中,而不是你的.h文件。

答案 3 :(得分:4)

您可以尝试此解决方案。我通过这种方式解决了同样的问题。

产品>方案>编辑方案>选择" Build"在左侧菜单上>查找隐式依赖项

在构建标签下,选中'查找隐式依赖项':

Find implicit dependencies

然后再打扫干净并再次建造。

答案 4 :(得分:4)

也许你创建了一个新目标,但是你没有在podfile中添加它

enter image description here

答案 5 :(得分:3)

在我的观点中,我解决了只需切换import语句的顺序和构建工作正常。

答案 6 :(得分:3)

我发现我不小心打开了 ProjectName.xcodeproj  文件而不是 ProjectName.xcworkspace 文件。

打开 xcworkspace 文件,项目将重新开始工作!

答案 7 :(得分:3)

将我自己的情况添加到循环中。

在我的桥接头文件中,le'Ts说我添加了一个导入

#import "File.h"

File.h头文件中,有一个从Prefix.pch中的导入引用的类型,必须在我的File.h中添加缺少的#import

答案 8 :(得分:1)

在我的情况下,我在我的一个项目文件中遇到了与“Unknown type”之类的其他错误相同的编译器错误,所以我只是将其添加到有问题的文件中,它立即解决了。

#import <UIKit/UIKit.h>

答案 9 :(得分:0)

此外,如果您有多个目标,请注意在每个文件中包含#import

答案 10 :(得分:0)

当您在运行xcodebuild命令时在终端中收到此错误时,请确保传递-workspace YourWorkspace.xcworkspace

答案 11 :(得分:0)

@Li Yakun 如果项目中有多个目标,podfile中的每个新目标必须具有以下内容,那么这就是解决方案:

target 'NEWTARGET' do
    # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
    use_frameworks!

    # Pods for MAINTARGET
    shared_pods
end