目录
1、当前是Debug x64,配置中引用OSGeo4W下载的
1.1、没有拷贝OSGeo4W下载的dll、自己编译的dll:报错找不到dll
2.1、没有拷贝OSGeo4W下载的dll、自己编译的dll:报错找不到dll
2.2、拷贝OSGeo4W下载的dll:bad_alloc异常
3、当前是Release x64,配置中引用OSGeo4W下载的
3.1、没有拷贝OSGeo4W下载的dll、自己编译的dll:报错找不到dll
4.1、没有拷贝OSGeo4W下载的dll、自己编译的dll:报错找不到dll
一、依赖关系、编译先后顺序
curl、zlib、tiff用cmake编译,tcl用nmake编译。
sqlite用nmake编译。
Proj用cmake编译。
GeoTiff用cmake编译。
GDAL用cmake编译。
PDAL用camke编译。
CMake用3.31.0版。
创建一个文件夹Build,存放所有项目的源代码;创建一个文件夹Install,存放所有项目安装的内容。
在每个项目的源代码文件夹中,创建build文件夹,用于cmake。
二、cmake编译curl
Configure设置变量值:
CMAKE_INSTALL_PREFIX=F:/Install/CURL
Generate->Open Project->生成ALL_BUILD->生成INSTALL
三、cmake编译zlib
Configure设置变量值不生效:
CMAKE_INSTALL_PREFIX=F:/Install/zlib
需要在F:/Build/zlib-1.3.1/CMakeLists.txt中增加:
set(CMAKE_INSTALL_PREFIX "F:/Install/zlib" CACHE PATH "Installation Directory" FORCE)
Generate->Open Project->生成ALL_BUILD->生成INSTALL
四、cmake编译tiff
Configure设置变量值:
CMAKE_INSTALL_PREFIX=F:/Install/tiff
Generate->Open Project->生成ALL_BUILD->生成INSTALL
五、nmake编译tcl
github_tcl_main(编译会出错)
sourceforge_tcl_9.0.0或official_tcl_9.0.0(用这个版本编译)
编译参考:
https://www.tcl-lang.org/doc/howto/compile.html
sqlite-master/README.md
sqlite-master/doc/compile-for-windows.md
tcl9.0.0/README.md
tcl9.0.0/win/README
打开“x64 Native Tools Command Prompt for VS 2019”,执行以下命令
cd F:/Build/tcl9.0.0/win
nmake /f makefile.vc release
nmake /f makefile.vc INSTALLDIR=F:/Install/tcl
cp F:/Install/tcl/bin/tclsh90.exe F:/Install/tcl/bin/tclsh.exe
六、nmake编译sqlite
基于tcl,sqlite用nmake编译
github_sqlite_master(用这个版本编译)
打开“x64 Native Tools Command Prompt for VS 2019”,执行以下命令
cd F:/Build/sqlite-master
set TCLDIR=F:/Install/tcl
set PATH=F:/Install/tcl/bin;%PATH%
nmake /f Makefile.msc
可能F:/Build/sqlite-master/autosetup/jimsh0.c中报错,需要把报错位置的{}删掉。
七、cmake编译Proj
基于curl、sqlite、tiff,Proj用cmake编译
Configure设置变量值:
INCLUDE_DIR应该是.h文件所在目录,一般是include目录;
LIBRARY_RELEASE应该是.lib文件,一般在lib目录下。
CMAKE_INSTALL_PREFIX=F:/Install/PROJ
CURL_INCLUDE_DIR=F:/Install/CURL/include
CURL_LIBRARY_RELEASE=F:/Install/CURL/lib/libcurl-d_imp.lib
EXE_SQLITE3=F:/Build/sqlite-master/sqlite3.exe
SQLite3_INCLUDE_DIR=F:/Build/sqlite-master
SQLite3_LIBRARY=F:/Build/sqlite-master/sqlite3.lib
TIFF_INCLUDE_DIR=F:/Install/tiff/include
TIFF_LIBRARY_RELEASE=F:/Install/tiff/lib/tiffd.lib
取消GTest,具体操作见[参考]中的内容。
Generate->Open Project->生成ALL_BUILD->生成INSTALL
八、cmake编译GeoTiff
基于Proj、tiff,GeoTiff用cmake编译,得到静态库。
Configure设置变量值:
CMAKE_INSTALL_PREFIX=F:/Install/GeoTIFF
PROJ_INCLUDE_DIR=F:/Install/PROJ/include
PROJ_LIBRARY=F:/Install/PROJ/lib/proj_d.lib
TIFF_INCLUDE_DIR=F:/Install/tiff/include
TIFF_LIBRARY_RELEASE=F:/Install/tiff/lib/tiffd.lib
Generate->Open Project->生成ALL_BUILD->生成INSTALL
九、cmake编译GDAL
基于curl、GeoTiff、Proj、tiff、zlib,GDAL用cmake编译
Configure设置变量值:
CMAKE_INSTALL_PREFIX=F:/Install/gdal
CURL_INCLUDE_DIR=F:/Install/CURL/include
CURL_LIBRARY_RELEASE=F:/Install/CURL/lib/libcurl-d_imp.lib
GEOTIFF_INCLUDE_DIR=F:/Install/GeoTIFF/include
GEOTIFF_LIBRARY_RELEASE=F:/Install/GeoTIFF/lib/geotiff_d.lib
PROJ_INCLUDE_DIR=F:/Install/PROJ/include
PROJ_LIBRARY_RELEASE=F:/Install/PROJ/lib/proj_d.lib
TIFF_INCLUDE_DIR=F:/Install/tiff/include
TIFF_LIBRARY=F:/Install/tiff/lib/tiffd.lib
TIFF_LIBRARY_RELEASE=F:/Install/tiff/lib/tiffd.lib
ZLIB_INCLUDE_DIR=F:/Install/zlib/include
ZLIB_LIBRARY_RELEASE=F:/Install/zlib/lib/zlibd.lib
当没有External库时,使用Internal库。
Generate->Open Project->生成ALL_BUILD->生成INSTALL
十、cmake编译PDAL
基于zlib、curl、Proj、GeoTiff、GDAL,PDAL用cmake编译
需要在F:/Build/PDAL-master/cmake/geotiff.cmake中增加:
find_package(TIFF)
在F:/Build/PDAL-master/CMakeLists.txt中增加:
${TIFF_INCLUDE_DIR}
${TIFF_LIBRARY}
Configur