我设置了一个Podfile以使用WhirlyGlobeMaply:
platform :ios, '10.2'
project 'MyProject.xcodeproj'
target 'MyProject' do
use frameworks!
pod 'WhirlyGlobe', '2.4'
pod 'WhirlyGlobeResources'
[some other pods]
end
这很好。但是当我添加GRDB.swift
时pod GRDB.swift
然后pod install / clean / build all, new dependency编译得很好(GRDB),但是在编译旧的(WhirlyGlobe)时,我得到:
'sqlite3.h' file not found
所以,两个pod都在自己编译,但似乎有一些关于sqlite Header的交互。
(事实上我一开始并没有注意到这个问题,因为我没有清理我的项目和重建,XCode只需要编译GRDB,这很好。这只发生在干净。)
到目前为止我发现了什么:
WhirlyGlobe和GRDB.swift都包含sqlite作为库。
s.library = 'sqlite3'
s.subspec 'Lib' do |l|
...
l.libraries = 'c++', 'sqlite3'
...
end
GRDB实际上在
中安装了sqlite3.h
个文件
Pods/GRDB.swift/Support/sqlite3.h
。
WhirlyGlobes安装中似乎没有包含此类文件(使用find Pods/ -name "sqlite3.h"
进行检查。
引发错误的文件#import "sqlite3.h"
为VectorDatabase.h
,而podspec建议的部分WhirlyGlobeLib
到目前为止我做了什么:
pod deintegrate
,pod install
sqlite3.h
的目录从GRDB添加到标题搜索路径(我的项目和WhirlyGlobe Pods目标)任何提示(非常感谢)。
答案 0 :(得分:1)
GRDB的作者。
对于上下文:GRDB for Swift 3附带sqlite3.h,以便让应用程序在需要时使用SQLite的低级C apis。 sqlite3.h与iOS SDK附带的标题相同,但它是重复的,以便解决Clang构建模块的方式的限制。
现在,这里有两个可能的解决方案:
#import "sqlite3.h"
替换为#import <sqlite3.h>
,以便编译器知道应该在系统标头中搜索它。