折腾了这么多依赖库,终于能够编译生成 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.h 和 sqlite3ext.h 复制到 C:\OSGeo4W\include\ 中。将 ${INSTDIR}\lib\ 目录中的 sqlite3_i.lib 复制到 C:\OSGeo4W\lib\ 中。
zlib
编译生成可参考 Microsoft Visual Studio 编译生成 zlib。
将 …\zlib-1.2.11\ 中的 zlib.h 和 zconf.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 行:
|
|
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)。
|
|
执行完成后,即可在 ${INSTDIR} 中可以找到编译生成的头文件、静态链接和动态链接文件。