Since this took me a while to figure out, I figured I'd document it here in case it's useful to others later.
First, install compiler dependencies. (If you don't already have Homebrew installed, you'll need to do that first.)
brew install automake autoconf libtool libxml2 pkg-config
brew link libxml2
Build libspatialite from a very nice makefile that downloads and compiles libspatialite and its dependencies, SQLite, GEOS and PROJ.4.
git clone https://github.com/gstf/libspatialite-ios.git
cd libspatialite-ios
make
The result is a folder, lib, containing several .a files, as well as an include folder containing many .h files.
Create a new XCode project.
Copy the libspatialite binaries and "include" folder into a folder named "libspatialite" in the XCode project folder.
In the XCode project's "Build Settings", you'll need to set the library and header search paths:
Library Search Paths: $(PROJECT_DIR)/AppName/libspatialite
Header Search Paths: $(PROJECT_DIR)/AppName/libspatialite/include
Drag the .a files into your project.
From the "Build Phases" window, add the following to the section "Link Binary With Libraries":
-
libz.dylib
- libxml2.2.dylib
- libc++.dylib
- libcharset.1.0.0.dylib
- libiconv.dylib
Now you should be able to use spatialite! To test if everything worked, just make your AppDelegate output the spatialite version.
Add the following to AppDelegate.m
#include <sqlite3.h>
#include <spatialite/gaiageo.h>
#include <spatialite.h>
In your application:didFinishLaunchingWithOptions: method, add:
spatialite_init (0);
printf("Spatialite version: %s\n", spatialite_version());
Compile and run and you should see the version output in the console!