- 一、编译过程中用到的文件
- 二、Geos编译
- 三、Proj编译
- 四、如何查看MSVC_VER值
- 五、修改文件:nmake.opt
操作系统:Windows 11 专业版 21H2
Visual Studio IDE:Microsoft Visual Studio Community 2022 (64 位) - Current
GDAL版本:GDAL:3.4.0
GEOS版本:geos-3.10.1
PROJ版本:proj-8.1.1
SWIG版本:swigwin-4.0.2
FileGDB_API版本:FileGDB_API_1.5.2FileGDB_API_VS2019
1、 打开文件:C:devgeos-3.10.1INSTALL,清楚的写出了在各个平台下如何编译
2、 打开vs2022,选择文件-打开-cmake,找到CMakeLists.txt文件
3、 在vs中选择生成即可(切换到release)(release第一遍编译报错,继续编译一下就可以了)
- 编译后的dll和lib文件在文件夹中C:OpenSourcegeos-3.10.1outbuildx64-Releaselib和C:OpenSourcegeos-3.10.1outbuildx64-Releasebin
5.将文件复制到指定目录:
C:OpenSourcegeos-3.10.1outbuildx64-Releasecapi geos_c.h
复制到
C:OpenSourcegeos-3.10.1capi geos_c.h
依据proj官网的编译方法.
特别的,不知道哪里配置错误,默认编译出来是debug版本,编译gdal的时候报错,打开文件:“CMakeLists.txt”,找到下面的代码,这里把判断注释掉,直接默认设置为Release版本即可
#Set a default build type for single-configuration cmake generators if
#no build type is set.
#if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
#endif()
在代码中敲下面的代码,鼠标放上去就看到了
#if _MSC_VER ==1000
#endif
将
MSVC_VER=1500
修改为:
MSVC_VER=1930
将:
SWIG = swig.exe
修改为:
SWIG = D:OpenSourceswigswigwin-2.0.12swig.exe
取消注释:
#WIN64=YES
修改为:
WIN64=YES
取消注释并修改:
#Uncomment for GEOS support (GEOS >= 3.1.0 required)
#GEOS_DIR=C:/warmerda/geos
#GEOS_CFLAGS = -I
(
G
E
O
S
D
I
R
)
/
c
a
p
i
−
I
(GEOS_DIR)/capi -I
(GEOSDIR)/capi−I(GEOS_DIR)/source/headers -DHAVE_GEOS
#GEOS_LIB = KaTeX parse error: Double subscript at position 25: …)/source/geos_c_̲i.lib **修改为:** …(GEOS_DIR)/capi -I$(GEOS_DIR)/include -DHAVE_GEOS
GEOS_LIB = $(GEOS_DIR)/out/build/x64-Release/lib/geos_c.lib
取消注释并修改:
#FGDB_ENABLED = YES
#FGDB_PLUGIN = YES
#FGDB_SDK = C:UsersrburhumDesktopFileGDB_API_VS2008_1_0beta3
#FGDB_INC = $(FGDB_SDK)include
#FGDB_LIB = $(FGDB_SDK)libFileGDBAPI.lib
修改为:
FGDB_ENABLED = YES
#FGDB_PLUGIN = YES
FGDB_SDK = C:OpenSourceFileGDB_API_VS2019
FGDB_INC = $(FGDB_SDK)include
FGDB_LIB = $(FGDB_SDK)lib64FileGDBAPI.lib
参考网站:https://trac.osgeo.org/gdal/wiki/FileGDB#no1
FileGDB_API_1_4编译报错
取消注释并修改:
#PROJ stuff (required dependency: PROJ >= 6)
#PROJ_INCLUDE = -Id:install-projlocalinclude
#Note: add shell32.lib is needed starting with PROJ 7.0 in some circumstances
#for static linking. See https://github.com/OSGeo/gdal/issues/2488
#And ole32.lib also since PROJ 7.1 (see https://github.com/OSGeo/gdal/issues/2743)
#PROJ_LIBRARY = d:install-projlocallibproj_6_0.lib shell32.lib ole32.lib
修改为:
#PROJ stuff (required dependency: PROJ >= 6)
PROJ_INCLUDE = -IC:devprojsrc
#Note: add shell32.lib is needed starting with PROJ 7.0 in some circumstances
#for static linking. See https://github.com/OSGeo/gdal/issues/2488
#And ole32.lib also since PROJ 7.1 (see https://github.com/OSGeo/gdal/issues/2743)
PROJ_LIBRARY = C:/dev/proj/_build.vs2022/lib/proj.lib shell32.lib ole32.lib
取消注释并修改:
#SQLite Libraries
#SQLITE_INC=-IN:pkgsqlite-win32
#SQLITE_LIB=N:pkgsqlite-win32sqlite3_i.lib
修改为:
#SQLite Libraries
SQLITE_INC=-IC:ProgramDataMiniconda3pkgssqlite-3.36.0-h2bbff1b_0Libraryinclude
SQLITE_LIB=C:ProgramDataMiniconda3pkgssqlite-3.36.0-h2bbff1b_0Librarylibsqlite3.lib
取消注释并修改:
#Uncomment to use libcurl (DLL by default)
#The cURL library is used for WCS, WMS, GeoJSON, SRS call importFromUrl(), WFS, CouchDB, /vsicurl/ etc.
#CURL_DIR=C:curl-7.15.0
#CURL_INC = -I$(CURL_DIR)/include
#Uncomment following line to use libcurl as dynamic library
#CURL_LIB = $(CURL_DIR)/libcurl_imp.lib wsock32.lib wldap32.lib winmm.lib
#Uncomment following two lines to use libcurl as static library
#CURL_LIB = $(CURL_DIR)/libcurl.lib wsock32.lib wldap32.lib winmm.lib
#CURL_CFLAGS = -DCURL_STATICLIB
修改为:
#Uncomment to use libcurl (DLL by default)
#The cURL library is used for WCS, WMS, GeoJSON, SRS call importFromUrl(), WFS, CouchDB, /vsicurl/ etc.
CURL_DIR=C:ProgramDataMiniconda3pkgslibcurl-7.78.0-h86230a5_0Library
CURL_INC = -I$(CURL_DIR)/include
#Uncomment following line to use libcurl as dynamic library
#CURL_LIB = $(CURL_DIR)/libcurl_imp.lib wsock32.lib wldap32.lib winmm.lib
#Uncomment following two lines to use libcurl as static library
CURL_LIB = $(CURL_DIR)/lib/libcurl.lib wsock32.lib wldap32.lib winmm.lib
CURL_CFLAGS = -DCURL_STATICLIB
取消注释并修改为:
#if using an external libtiff library. Must be libtiff >= 4.0
TIFF_INC = -IC:ProgramDataMiniconda3pkgslibtiff-4.2.0-hd0e1b90_0Libraryinclude
TIFF_LIB = C:ProgramDataMiniconda3pkgslibtiff-4.2.0-hd0e1b90_0Librarylib/tiff.lib
管理员身份运行
x64 Native Tools Command Prompt for VS 2022 Current
执行下面的命令
nmake /f makefile.vc MSVC_VER=1930 WIN64=YES
nmake /f makefile.vc install
nmake /f makefile.vc devinstall
cd swigcsharp
nmake /f makefile.vc interface
nmake /f makefile.vc
nmake /f makefile.vc install



