Xcode 9 - 未能发出预编译 header
Xcode 9 - failed to emit precompiled header
我在 Objective-C 和 swift 中都有一个项目 MyProjectName-Bridging-Header.h
,我还配置了 Objective-C 桥接 Header。
另外,我在 .pch 文件中添加了 'MyprojectName-Swift.h'。
这在 xcode 8.2 上工作正常,但是当我从 xcode 9 构建我的项目时,出现以下错误。
failed to emit precompiled header
'/Library/Developer/Xcode/DerivedData/MyprojectName-lajanjvhqjnfjksdsndsfkads/Build/Intermediates.noindex/PrecompiledHeaders/MyprojectName-Bridging-Header-swift_44AHJm3Z96qu-clang_2BIMGQVXGEZ09.pch'
for bridging header
'/Documents/MyProjectLocaiton/FoneApp-Bridging-Header.h'
请帮我解决这个问题。谢谢!
我终于找到了这个问题的解决方案。
在我的项目中,Prefix Header
路径没有明确定义。之前的路径是
$(SRCROOT)/MyPrefixHeaderFile.pch
MyPrefixHeaderFile.pch
在项目文件夹中的另一个文件夹中,所以我将 Prefix Header
路径更新为
$(SRCROOT)/FolderName/MyPrefixHeaderFile.pch
在我的例子中,我在我的一个项目文件中遇到了相同的编译器错误和其他错误,例如 "Unknown type",所以我只是将其添加到有问题的文件中,它立即解决了。
#import <UIKit/UIKit.h>
如果您在项目中使用 cocoapods,请阅读此内容。
在更新 pods 和 xcode 使首次构建成功之后,我只是将部署目标更新为 iOS 10 或 11。所以问题出在我有行
的 podfile 里面
platform :ios, '11.0'
我在项目中的部署目标是 9.0
在我将我的播客文件更改为平台后
platform :ios, '9.0'
项目已修复。
您可以试试这个解决方案。我已经通过这种方式解决了同样的问题。
产品 > 方案 > 编辑方案 > Select "Build" 在左侧菜单 > 查找隐式依赖关系
在构建选项卡下,勾选 'Find implicit dependencies':
然后清理并重新构建。
在我看来,我解决了简单地切换导入语句的顺序并且构建工作正常。
也许您创建了一个新目标,但忘记将其添加到您的 Podfile 中:
target 'Pistachio-rrzcpjs' do
end
此外,如果您有多个目标,请注意在每个文件中包含您的 #import
。
我发现我不小心打开了ProjectName.xcodeproj
文件而不是 ProjectName.xcworkspace 文件。
打开xcworkspace文件,项目将再次开始工作!
当您在终端中使用 运行 xcodebuild 命令时出现此错误,请确保您传递了 -workspace YourWorkspace.xcworkspace
将我自己的情况添加到循环中。
在我的桥接头文件中,假设我添加了一个导入
#import "File.h"
在 File.h
头文件中,有一个从 Prefix.pch 中的导入引用的类型,必须在我的 File.h [=12] 中添加缺少的 #import =]
@李亚坤
如果您在项目中有多个目标,这就是解决方案,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
还要确保您导入的 "ProductModuleName-Swift.h" 是在您的 .m 文件中,而不是您的 .h 文件中。
我在 Objective-C 和 swift 中都有一个项目 MyProjectName-Bridging-Header.h
,我还配置了 Objective-C 桥接 Header。
另外,我在 .pch 文件中添加了 'MyprojectName-Swift.h'。
这在 xcode 8.2 上工作正常,但是当我从 xcode 9 构建我的项目时,出现以下错误。
failed to emit precompiled header '/Library/Developer/Xcode/DerivedData/MyprojectName-lajanjvhqjnfjksdsndsfkads/Build/Intermediates.noindex/PrecompiledHeaders/MyprojectName-Bridging-Header-swift_44AHJm3Z96qu-clang_2BIMGQVXGEZ09.pch' for bridging header '/Documents/MyProjectLocaiton/FoneApp-Bridging-Header.h'
请帮我解决这个问题。谢谢!
我终于找到了这个问题的解决方案。
在我的项目中,Prefix Header
路径没有明确定义。之前的路径是
$(SRCROOT)/MyPrefixHeaderFile.pch
MyPrefixHeaderFile.pch
在项目文件夹中的另一个文件夹中,所以我将 Prefix Header
路径更新为
$(SRCROOT)/FolderName/MyPrefixHeaderFile.pch
在我的例子中,我在我的一个项目文件中遇到了相同的编译器错误和其他错误,例如 "Unknown type",所以我只是将其添加到有问题的文件中,它立即解决了。
#import <UIKit/UIKit.h>
如果您在项目中使用 cocoapods,请阅读此内容。 在更新 pods 和 xcode 使首次构建成功之后,我只是将部署目标更新为 iOS 10 或 11。所以问题出在我有行
的 podfile 里面platform :ios, '11.0'
我在项目中的部署目标是 9.0 在我将我的播客文件更改为平台后
platform :ios, '9.0'
项目已修复。
您可以试试这个解决方案。我已经通过这种方式解决了同样的问题。
产品 > 方案 > 编辑方案 > Select "Build" 在左侧菜单 > 查找隐式依赖关系
在构建选项卡下,勾选 'Find implicit dependencies':
然后清理并重新构建。
在我看来,我解决了简单地切换导入语句的顺序并且构建工作正常。
也许您创建了一个新目标,但忘记将其添加到您的 Podfile 中:
target 'Pistachio-rrzcpjs' do
end
此外,如果您有多个目标,请注意在每个文件中包含您的 #import
。
我发现我不小心打开了ProjectName.xcodeproj 文件而不是 ProjectName.xcworkspace 文件。
打开xcworkspace文件,项目将再次开始工作!
当您在终端中使用 运行 xcodebuild 命令时出现此错误,请确保您传递了 -workspace YourWorkspace.xcworkspace
将我自己的情况添加到循环中。
在我的桥接头文件中,假设我添加了一个导入
#import "File.h"
在 File.h
头文件中,有一个从 Prefix.pch 中的导入引用的类型,必须在我的 File.h [=12] 中添加缺少的 #import =]
@李亚坤 如果您在项目中有多个目标,这就是解决方案,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
还要确保您导入的 "ProductModuleName-Swift.h" 是在您的 .m 文件中,而不是您的 .h 文件中。