升级到最新的Xcode后,我遇到了一系列错误。
MyApp/Pods/Protobuf/objectivec/google/protobuf/Any.pbobjc.m:17:10: Non-portable path to file '<protobuf/Any.pbobjc.h>'; specified path differs in case from file name on disk
当我看代码时,我发现路径确实是大写的。
#import <Protobuf/Any.pbobjc.h>
有什么建议可以解决这个问题吗?
我的pod文件如下:
# Uncomment the next line to define a global platform for your project
platform :ios, '10.0'
target 'MyApp' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for MyApp
pod 'Firebase/Core'
pod 'Firebase/Storage'
pod 'Firebase/Database'
pod 'Firebase/Firestore'
pod 'Firebase/Auth'
pod 'Firebase/AdMob'
# Pods for PodTest
pod 'Fabric'
pod 'Crashlytics'
target 'MyAppTests' do
inherit! :search_paths
# Pods for testing
end
target 'MyAppUITests' do
# inherit! :search_paths
# Pods for testing
end
end
到目前为止,我已经尝试取消集成并重新安装所有pod文件,但是错误仍然存在。
答案 0 :(得分:3)
请删除衍生数据,
如果您在工作空间环境中,则可以转到“文件”>“工作空间设置”,对于常规项目环境,可以进入“文件”>“项目设置”。然后单击“派生数据”部分下的灰色小箭头,然后选择要删除的项目文件夹。
然后取消整合并重新安装所有pod文件。
希望这对您有用!
答案 1 :(得分:2)
这是由于在不区分大小写的文件系统上编译代码所致,其中两个文件:
在源代码文件Protobuf / objectivec / google / protobuf / Any.pbobjc.m中-
计算机上的目录和文件:
这两个都指向对洞穴不敏感的文件系统上的同一文件。也就是说,在将目录Protobuf和protobuf视为相同的文件系统上。
但是,如果将相同的目录结构复制到区分大小写的文件系统,则源代码将查找与在不区分大小写的文件系统上实际创建的目录不同的目录。
此警告基本上是在提醒您,有一个“陷阱”正在等待发生。
最终的答案是让protobuf CocoaPod通过更改其协议缓冲区编译器来修复当前的17条警告。
在此之前,可以通过将C ++编译器选项“ -Wno-nonportable-include-path”添加到每个有此问题的文件或整个项目中来“禁用”此警告。此C ++编译器选项进入“其他警告标志”行的“ Apple Clang-定制编译器标志”部分。