一、OSG(OSGEarth)的安装——利用Vcpkg编译 ( OSGEart编译后有Bug)

注意:

   经过坑爹的两个熬夜调试修改终于发现,vcpkg编译的OSG能用,但osgearth不能用有bug,还是需要用CMake重新编译——追加于凌晨两点,f_ck! 测试:将oe例子运行所需要的各个dll都拷贝到同一文件夹下,osgearth_view.exe 还是跑不起来,depends看有错误依赖项,vcpkg没有完美构建出来osgearth库,网上查了一下,有同学遇到同样问题!
大家如果想用OSG的话可以采用vcpkg编译(跳过3.2),如果用osgearth的话就不用往下看了。

正文

   说到OSGEarth的安装就不得不回忆15年左右安装OSG的过程,QT+CMake+源码编译,各种编译不过和崩溃,看着CMake界面上各种红色的错误,很是沮丧,最后好像是花了一天多才编译好,运行起例子那个牛的时候激动的不行,最后还是去用了VTK,没再深入了解过OSG。。。。最近需要OSGEarth用,于是又开始折腾了,这次偷懒用的VC++ 打包工具 Vcpkg,很快就编译好了,并且全程几乎无手动参与,感觉挺好,于是记录下来过程。

1.Vcpkg介绍

   vcpkg 是微软 C++ 团队开发适用于Windows,Linux 和 MacOS 的 C ++库管理器。vcpkg 自身也是使用 C++ 开发的 (而其他的 C++ 包管理大多并不是 C++ 开发的),并且 vcpkg 能够帮助用户在 Visual Studio 中,更好的使用这些安装好的库。vcpkg 整合了 git,构建系统整合的 CMake,而绝大多数的 C++ 项目都可以直接或者间接的方式使用 CMake创建原生项目文件并构建。
   简单点说就是习惯用vs的同学,使用起来开源库非常方便,个人感觉就像python里面的命令“ pip install VTK-7.1.1-cp36-cp36m-win_amd64.whl ”一样,可以自动联网下载,并用你电脑上的 VS编译器进行编译。优点如下:
1)自动下载开源库源代码
2)源码包的缓存管理和版本管理,可以升级版本
3)自动编译
4)依赖关系检查(比如编译libcurl,会自动下载zlib、openssl进行编译)
5)无缝集成Visual Studio,不需要设置库文件、头文件的所在目录,自动集成。
6)Visual Studio全平台支持,不仅支持Debug/Release、x86/x64编译,还支持UWP、ARM平台的编译。

2.获取Vcpkg

   Vcpkg的官方源码站点为:https://github.com/microsoft/vcpkg直接下载一份压缩包解压放到磁盘里面,我的放在了 D:\vcpkg_master。
   注意:Vcpkg大量使用的psl脚本,所以官方强烈推荐使用PowerShell而不时CMD命令行来执行各种操作。尽管在使用的时候兼容CMD,但是在编译这一步,请使用PowerShell。
编译很简单,使用PowerShell执行Vcpkg工程目录下的“bootstrap-vcpkg.bat”命令,即可编译。编译好以后会在同级目录下生成vcpkg.exe文,编译期间,脚本会自动下载vswhere组件。
命令:PS D:\vcpkg_master> .\bootstrap-vcpkg.bat
如果查看Vcpkg支持的开源库列表执行命令:.\vcpkg.exe search可以看到
如果查看本机安装的开源库列表执行命令:.\vcpkg.exe list可以看到

3.使用vcpkg为Windows构建osgearth

3.1 首先安装构建完全功能的OSGearth所需的依赖项:

执行命令:

PS D:\vcpkg_master> .\vcpkg install osg:x64-windows sqlite3:x64-windows protobuf:x64-windows poco:x64-windows

   这将需要一段时间第一次运行它,因为这会下载很多压缩包,然后解压编译放在你的D盘下,如果遇到网速不好卡主的情况,可以手动下载被卡主的压缩包放到D:\vcpkg_master\downloads 下面,然后重新执行上面命令,不用下载了直接解压编译。例如下面的图所示:
在这里插入图片描述
在这里插入图片描述
然后安静等待所有的依赖项执行完成吧。

3.2 实际构建OSGearth
执行命令:.\vcpkg install osgearth:x64-windows会弹出提示是否重新构建几个你已经安装过的依赖项以及新的添加库文件,会有个提示命令:

run the command with the --recurse option

你需要重新执行命令如下:.\vcpkg install osgearth:x64-windows --recurse
   然后程序就会重复构建依赖项时候的情况,下载、解压、编译,你可以手动下载帮忙,这次非常多大概有一百多个库需要安装,不要问为什么,我也说不清,吃瓜群众围观静待即可。中间可能会出现下载报错,然后你手动下载也会发现网址打不开,例如:“raw.githubusercontent.com”无法链接导致无法下载,这时候可以去修改Hosts临时解决:
1)通过IPAddress.com首页,输入raw.githubusercontent.com查询到了真实IP地址199.232.28.133
2)找到C:\Windows\System32\drivers\etc的hosts文件
3)添加 以下内容并保存:199.232.28.133 raw.githubusercontent.com
4)重新执行命令下载吧

3.3.编译完成

下图中只有OSG是我想要的,但是那么多其他的。。。。。
在这里插入图片描述
安装完了会提示:“done”。
在这里插入图片描述

个人编译完成并且导出了一份,具体下载地址:https://download.csdn.net/download/m0_37251750/12370782

Zip archive exported at: D:\vcpkg_master\vcpkg-export-20200428-231448.zip
To use the exported libraries in CMake projects use:
    "-DCMAKE_TOOLCHAIN_FILE=[...]/scripts/buildsystems/vcpkg.cmake"

4.集成到工程

   为什么要“集成到工程”呢?因为在大部分情况下,我们不希望集成到全局,毕竟有很多第三方库我们希望自定义处理一下,或者干脆不想集成第三方库。那么集成到工程是最灵活的处理方式。也是工程级项目推荐的处理方式。
   “集成到工程”需要利用Visual Studio 中的nuget插件来实现。我们接下来一步一步来说。

4.1. 生成配置
   执行命令 .\vcpkg integrate project,这时候会在“\scripts\buildsystems”目录下,生成nuget配置文件,其中是指vcpkg实际所在目录。
在这里插入图片描述
4.2. 基本配置
   打开Visual Studio,点击菜单“工具->NuGet包管理器->程序包管理器设置”,进入设置界面,点击“程序包源”。
在这里插入图片描述
   点击“加号”增加一个源。修改源的名字为vcpkg。在“源”的选项中点击右侧的””选择vcpkg目录下的“scripts\buildsystems”目录,然后点击右侧的“更新按钮”。点击“确定”,关闭设置对话框。到此,全局性的设置已经完成,以后不必再重复设置了。

4.3. 工程配置
   用Visual Studio 打开一个工程或解决方案。右键点击需要设置的工程,选择“管理NuGet程序包”。在右上角的“程序包源”中选择刚刚设置的“vcpkg”。这样在“浏览”选项卡中就可以看到“vcpkg.H.Repos.vcpkg”。点击最右侧的“安装”。这样就可以集成到某个工程了。
在这里插入图片描述
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章