MSVC 编译生成 libspatialite

  折腾了这么多依赖库,终于能够编译生成 libspatialite 了。

版本

Visual Studio: 2015

libspatialite: 4.3.0a

编译生成依赖库

  libspatialite 的编译默认安装了 OSGeo4W,为了不修改 makefile.vc 文件,可将自己编译生成的依赖库复制到 C:\OSGeo4W\ 中。

iconv

  编译生成可参考 Microsoft Visual Studio 编译生成 libiconv

  将 …\libiconv\inlude\ 中的 iconv.h 复制到 C:\OSGeo4W\include\ 中。将生成的 libiconv.lib 复制到 C:\OSGeo4W\lib\ 中,并重名为 iconv.lib

FreeXL

  编译生成可参考 MSVC 编译生成 FreeXL

  将 ${INSTDIR}\include\ 中的 freexl.h 复制到 C:\OSGeo4W\include\ 中。将 ${INSTDIR}\lib\ 中的 freexl_i.lib 复制到 C:\OSGeo4W\lib\ 中。

SQLite

  编译生成可参考 MSVC 编译生成 SQLite3

  将 ${INSTDIR}\include\ 目录下的 sqlite3.hsqlite3ext.h 复制到 C:\OSGeo4W\include\ 中。将 ${INSTDIR}\lib\ 目录中的 sqlite3_i.lib 复制到 C:\OSGeo4W\lib\ 中。

zlib

  编译生成可参考 Microsoft Visual Studio 编译生成 zlib

  将 …\zlib-1.2.11\ 中的 zlib.hzconf.h 这 2 个头文件复制到 C:\OSGeo4W\include\ 中。对于参考上文编译生成 64 位的,将 …\zlib-1.2.11\contrib\vstudio\vc14\x64\ZlibDllRelease 生成的 zlibwapi.lib 复制到 C:\OSGeo4W\lib\ 中,并重命名为 zlib.lib;对于参考上文编译生产 32 位的,将 …\zlib-1.2.11\ 文件夹中的 zdll.lib 复制到 C:\OSGeo4W\lib\ 中,并重命名为 zlib.lib

  编辑 zconf.h,注释 434 - 436 行:

1
2
3
//#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */
//# define Z_HAVE_UNISTD_H
//#endif

GEOS

  编译生成可参考 MSVC 编译 GEOS

  将 …\geos-3.6.1\capi\ 中的 geos_c.h 复制到 C:\OSGeo4W\include\ 中。将 …\geos-3.6.1\src\ 中的 geos_c_i.lib 复制到 C:\OSGeo4W\lib\ 中,并重命名为 geos_c.lib

proj.4

  编译生成可参考 MSVC 编译生成 proj.4

  将 ${INSTDIR}\include\ 中的 proj_api.h 复制到 C:\OSGeo4W\include\ 中。将 ${INSTDIR}\lib\ 中的 proj_i.lib 复制到 C:\OSGeo4W\lib\ 中。

libxml2

  编译生成可参考 MSVC 编译 libxml2

  将 ${prefix}\include\libxml2\ 中的 libxml 文件夹复制到 C:\OSGeo4W\include\ 中。将 ${INSTDIR}\lib\ 中的 libxml2.lib 复制到 C:\OSGeo4W\lib\ 中。

编译生成

第 1 步

  下载 libspatialite-4.3.0a.tar.gz,并解压到目标文件夹。

第 2 步

  编辑 …\libspatial-4.3.0a\src\gaiageo\gg_extras.c。由于 MSVC 不支持 rint() 函数,简单地将 gg_extras.c 代码中所有“rint”替换为“rint1”即可。

第 3 步

  libspatialite 默认的生成路径为 C:\OSGeo4W,如果想更改生成路径,可编辑 nmake.opt,修改 INSTDIR 指向目标路径。

第 4 步

  管理员身份打开 VS2015 Native Tools Command Prompt(根据实际需要选择 x86 或 x64)。

1
2
3
cd libspatial-4.3.0a
nmake /f makefile.vc
nmake /f makefile.vc install

  执行完成后,即可在 ${INSTDIR} 中可以找到编译生成的头文件、静态链接和动态链接文件。