Spatialite和iOS

4
我正在尝试构建最新版本的Spatialite,以在iOS平台上使用,但进展不大。我已下载了以下库的最新版本,并尝试将它们作为一个静态库合并到一个项目中(每个库都是一个目标),然后编译它们。
- Spatialite(3.0.1汇编版) - GEOS(20121114夜间构建版) - PROJ.4(4.8.0)
每个下载包含许多与脚本、头文件和源代码交织在一起的文件。从这里的步骤here中不清楚应该加载哪些文件。我尝试将每个目录中的所有文件都放入自己的组中,但无济于事,而且在第2步卡住了,因为我的Xcode版本与示例中使用的版本不同。添加PROJ.4位时,Xcode会询问我是否要创建“外部构建系统项目”。
我还尝试过从post中获取Lionel的项目,并更新所有软件版本。不幸的是,Xcode在新源代码中抛出了数十个警告,并且还抛出了一些错误。如果需要,我可以分享这些。更进一步,我甚至将他的输出(一个静态库和头文件)带到另一个项目中,但由于某种原因,编译器会抛出错误,说它们找不到“sqlite3”。我已将SQLite3添加到该项目中,但并没有解决问题。
我还尝试跟进thread,但我无法提问,因此无法询问原始用户如何完成此操作。
最后,一个问题:
有人知道如何使用Xcode 4.5和iOS 6构建最新版本的Spatialite及其附属库(GEOS,PROJ.4)吗?
如果知道,能分享一下你是如何做到的吗?我也想理解概念上正在发生的事情。

如何为iOS编译Spatialite - JaakL
@JaakL,我在我的问题的第三段引用了那篇帖子。 - Aaron
2个回答

2
我知道两种可行的方法,都对我很好用。
  1. libspatialite-ios获取Makefile和补丁,然后输入make
  2. 使用Cocoapods和名为'spatialite'或甚至更一般的SpatialDBKit的pod。
这两种方法都会给您当前略旧的4.1.1版本,但对于大多数用途来说还是可以的。

有意思。我得去看看。一段时间以前,我们最终选择了在设备上非GIS解决方案并继续前进。 - Aaron
实际上,我已经在Android上使用普通的SQLite和Spatialite测试了简单的点数据,并且对于许多基本数据存储等情况,普通(非GIS)SQLite表现出来的速度就像是同样快的,甚至更快。我预计在iOS上也会是同样的结果。 - JaakL

1

通过 CocoaPods:

为 pod install 安装依赖项

brew install automake autoconf libtool

然后在您的XCode项目中添加Podfile模板:

pod init

添加 spatialite pod 依赖项:
vi Podfile

并将此行代码添加到主目标中。
pod 'spatialite', '4.1.1'

如果在Podfile中存在现有项目,则添加工作区

workspace 'YourWorkspaceName'

运行

pod install

坐下来放松一下。完成后使用XCode打开工作区。


看起来是一个可行的解决方案,如果你不介意 Cocoa Pods 的依赖。我会在有机会验证时再仔细看一下。 - Aaron
1
在XCode 7.3下对我不起作用 - 我已经进行了CP集成,但是在安装新的pod之后,源代码无法编译,出现19个与sqlite3_int64sqlite3相关的错误。 - Krodak
看起来这个答案已经出现了问题。我尝试在这里更新podspec到4.3.0 https://gist.github.com/lukepighetti/44b8a32b9bceece47015c9a54595f6ea,但是我一直收到一个“'geos_c.h'文件未找到,使用<angled> include;改用“quotes”错误。看起来spatialite使用的是旧的导入语法,不受xcode支持或“shimmable”https://www.programmersought.com/article/60352123739/。尝试过`5.0.0`,但需要有更多经验的人设置新的podspec。 - Luke Pighetti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接