简介
没啥好说的,地图坐标转换的库
下载
选择tags下的最新版7.2.0,安装方法参考git下的安装说明->https://proj.org/install.html
编译
这里我们通过vcpkg安装proj4的依赖项(sqlit3,tiff,curl)
(推荐使用vcpkg而不是conda,虽然conda有清华源但还是很慢)
进入vcpkg.exe同层目录,文件框输入cmd,依次执行以下命令
vcpkg.exe install sqlite3[core,tool]:x86-windows tiff:x86-windows curl:x86-windows
vcpkg.exe install sqlite3[core,tool]:x64-windows tiff:x64-windows curl:x64-windows
执行后就是漫长的等待
等了20分钟第一个命令执行完毕,再执行第2条命令
第二个装完
依赖项安装完毕之后,参考官网文档继续操作
这里我们就不用把proj文件放到指定位置,随意就好
进入下载好的proj文件(路径全英)下创建build文件夹,用于存放生成的结果,进入build文件夹,进入cmd
执行以下命令
DCMAKE_TOOLCHAIN_FILE 跟着的就是vcpkg.cmake的路径
cmake -DCMAKE_TOOLCHAIN_FILE=C:\src\vcpkg\scripts\buildsystems\vcpkg.cmake ..
安装中会在线下载些吊东西,等着就好
等结束后,再执行第二句 --> 这里塞入了大量的文件,真正的干活了
cmake --build . --config Debug -j 8
等着就好
到此结束!
最后,咱也照着官网的来测试下
ctest -V --build-config Debug
跳出来一大堆的信息,咱也看不懂,但应该是没啥问题的。
生成lib
打开build文件下的PROJ.sln
proj改为启动项,添加x64的编译,右键生成报错
模块计算机类型,指VS中附加的链接库函数类型,即lib或dll分为64位和32位之分,
目标计算机类型,此处指的是编译的平台,即X64或者Win32编译平台。 --> 可能用到了x86的资源了
这里查看目录
没啥问题,接着看,果然用到了x86的资源
改回来又编译一次发现还是不行,只能把所有选项打开,挨个看里面有没有x86的东西,又发现一个,把附加选项清空,再来!
这次舒服了
tip:
附加包含目录:x86改成x64
库目录/附加选项:清空
更新
时隔数月,需要再次编译,发现通过vcpkg死活下载不了,发现一个宝藏源:
找到最新的proj-8.0.0,下载下来通过cmake先搞一下看看
configure一下
缺少sqlite3和tiff
sqlite3
https://www.sqlite.org/download.html
下载3个文件
解压出来放到package里
新建空项目,将下面四个文件拷贝到项目中并添加
添加后如图
预处理定义如下
_USRDLL
SQLITE_ENABLE_RTREE
SQLITE_ENABLE_COLUMN_METADATA
SQLITE_ENABLE_FTS5
SQLITE_ENABLE_UNLOCK_NOTIFY
模块定义文件添加:sqlite3.def
改成静态库
生成即可
tiff
http://download.osgeo.org/libtiff/
下载最新的tiff-4.2.0.zip
解压如下,发现有makelist
通过cmake打开看一下(有了build文件夹,那我们直接使用)
一大堆标红,不管他,改一下安装前缀,点一下generate可以成功生成
去build里打开tiff.sln,改一下项目属性就可以直接生成了
更好的方法:
ALL_BUILD生成
INSTALL,仅生成INSTALL
这样就能在一开始设置的install前缀中看到我们需要的了(debug和release个来一次即可)
至此我们生成了sqlite3和tiff,重新用cmake试下proj
报错后勾选了advance,发现还缺少curl
curl
再试一下
报错(编译proj需要在线下google的东西,然而完全下不了啊 卧槽)
CMake Error at test/unit/CMakeLists.txt:32 (message):
Build step for googletest failed: 1
然后自己复制了链接通过下载了,通过everything找到同名文件,替换掉源文件
再次generate,终于!
酱酱!(如果只需要proj就单独编译proj好了,否则all build生成 再intall 仅生成,全部到 之前的install_prefix了)
编译
之前填写的curl include多包了一层,应该只需要包到include即可,这里就不改cmake重新生成了,手动改下
(前面的包含了x86想必是vcpkg集成到vs中,然后cmake调用vs自动获取到vcpkg下载的库 install目录了)