Install compiler dependencies
brew install automake autoconf libtool libxml2 pkg-config
brew link libxml2
Build libspatialite
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:
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!
@smbkr @mrclayman i have seen both of you guys have worked on building spatialite i tried both of the solutions.
I built spatialite 4.4.0 using https://github.com/smbkr/libspatialite-ios/blob/master/Makefile and
Last i used was https://github.com/mrclayman/libspatialite-ios/blob/libspatialite-5/Makefile
In both of the solutions base spatialite functions works fine in IOS but functions which require geos or proj or rtree does not work.(i also built another with rttopo for test purpose by manually disabeling GEOSContext_setErrorMessageHandler_r() check and it was built successfully)
For example ST_IsValid , IsValidReason , ST_Within , ST_Overlaps etc. ST_Within does not filter any feature. ST_IsValid always returns -1 even when i tried it on
SELECT ST_IsValid(ST_GeomFromText('POINT(15.785 21.713)'))
.I believe there is some library communication problem or might need to update build process.
I have posted complete problem detail here as well
https://stackoverflow.com/questions/78187601/st-within-st-isvalid-or-any-other-geos-or-rtreetopo-related-function-not-working.