proj.4的下载和编译

简介

下载

编译

生成lib


简介

没啥好说的,地图坐标转换的库

下载

https://github.com/OSGeo/PROJ

选择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死活下载不了,发现一个宝藏源:

http://download.osgeo.org/

找到最新的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

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目录了)

  • 17
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sendinn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值